Python 将行拆分为类别和文本
我的列表如下所示:Python 将行拆分为类别和文本,python,split,Python,Split,我的列表如下所示: foo = ["neg * , This is a sentence","pos * , This is another sentence"] 我需要以这样的方式拆分句子,一个值将成为类别,neg或pos,一个值将成为句子。 我试过: for text in foo: text = text.split("*") for a,b in text: cat=a text=b 然而,我得到了一个“太多的值需要解包”,有人有想法吗
foo = ["neg * , This is a sentence","pos * , This is another sentence"]
我需要以这样的方式拆分句子,一个值将成为类别,neg
或pos
,一个值将成为句子。
我试过:
for text in foo:
text = text.split("*")
for a,b in text:
cat=a
text=b
然而,我得到了一个“太多的值需要解包”,有人有想法吗?你的问题是你的循环构造得很糟糕(这是可以原谅的,因为你显然对整个事情都不熟悉) 尝试以下更安全的方法(列表理解): 现在您有了
[CAT,TEXT]
项的列表
>>> l = [p.split('*', 1) for p in foo]
>>> for cat, text in l:
print 'cat: %s, text: %s' % (cat, text)
cat: neg , text: , This is a sentence
cat: pos , text: , This is another sentence
您在第二个循环中迭代字符串
for text in foo:
text = text.split("*")
a,b = text:
在这种情况下,将a指定给文本的第一个元素,将b指定给第二个元素。
否则,您将字符串拆分为字符,并且变量的数量与字符的数量不同。文本中a、b的行
不合适。更好的选择是A,b=text
。前一个代码对一组对进行操作,后一个代码对单个对进行操作
应用该建议并消除冗余:
foo = ["neg * , This is a sentence","pos * , This is another sentence"]
for text in foo:
a,b = text.split("*")
# Now do something with 'a' and 'b'
如果您真的想重新使用文本
变量,可以这样做:
for text in foo:
a, text = text.split("*")
# Now do something with 'a' and 'text'
然后,textList
是一个文本字符串列表,catList
是一个cat字符串列表。否则,您将无法访问所有不同的猫和文本。您在内部循环中的赋值部分做错了。来,试试这个
lines = ["neg * , This is a sentence","pos * , This is another sentence"]
for line in lines:
category, sentence = line.split("*", 1)
这是你的实际缩进吗?是的,是不正确的吗?对不起,澄清一下:原始缩进是你的还是Inbar编辑的?我这样问是因为Python使用缩进来替换大括号。如果缩进出错,他不可能得到“太多值而无法解包”错误。这有点误导,因为它表明foo
包含列表,而不是字符串。而且,您的命名约定也不符合是的,这很有魅力,谢谢@Inbar Rose,谢谢大家的帮助。您正在使用Python 2吗?也许把印刷品改成蟒蛇3,如果师傅是初学者,他可能不会注意到……无论如何,这是个好办法。编辑:哦,对他有用,对不起,没有看到他的留言
textList = []
catList = []
for str in foo:
(cat,text) = str.split('*')
textList.append(text)
catList.append(cat)
lines = ["neg * , This is a sentence","pos * , This is another sentence"]
for line in lines:
category, sentence = line.split("*", 1)