【发布时间】:2013-10-08 12:53:37
【问题描述】:
我有这样的文字:
text = ["A/abc","B/abd","C/abc","D/xyz"]
我想要的输出是
mylist1 = ["A","C"]
mylist2 = ["B"]
mylist3 = ["D"]
我正在寻找的唯一标签是“/abc”和“/abd”
我现在拥有的是:
def searchWord(segment):
word_tag = segment.split('/')
if re.finditer('ab',word_tag[1]):
if re.finditer('abc',word_tag[1]):
letter = word_tag[0]
mylist1 = letter
else:
letter = word_tag[0]
mylist2 = letter
else:
letter = word_tag[0]
mylist3 = letter
return mylist1
return mylist2
return mylist3
mylist1,mylist2,mylist3 = [searchWord(segment) for segment in text]
它似乎工作正常,但抛出异常:
ValueError: too many values to unpack.
我的“文本”列表相当大,这可能是问题吗?在为此过程构建函数之前,我没有遇到此问题。
谢谢!
【问题讨论】:
-
由于
text有 4 个项目,因此列表理解也将如此。目前尚不清楚如何使用列表推导将其减少为一个 3 项列表,您可以将其解压缩到三个列表中。修复searchWord以返回一个元组不会解决这个问题。 -
@chepner 你能详细说明一下吗?我不确定我是否理解...
-
text有 4 个项目,因此searchWord将被调用 4 次,您的列表理解也将包含 4 个项目。您不能使用列表推导来执行您似乎想要的那种缩减(即[ 'a', 'b', 'c', 'd' ] -> [ ['a', 'b'], 'c', 'd' ])。
标签: python list error-handling