我在Python中偶然发现了一个非常奇怪的变量。我正在对多个unicode字符串进行标记操作,如下所示:
with open ("verbatims.txt","r") as verbatims :
for line in verbatims:
line = line.decode("utf8")
tokens = nltk.tokenize.word_tokenize(line)
&安培;当我print(tokens)
[u'Vive', u'la', u'poste', u'...', u'.', u'Le', u'facteur', u'qui', u'a', u'la', u'flemme', u'de', u'sonner', u'pour', u'te', u'remettre', u'ton', u'colis', u'et', u'te', u'dis', u'que', u"t'es", u'absent']
[u'Une', u'honte', u'ce', u'petit', u'postier', u'fain\xe9ant', u'.', u'.']
我有这个奇怪的输出。似乎tokens
是包含多个列表的对象。这里只是一个示例,但我有多个列表作为句子。此外,我不能像在普通列表中那样打电话给tokens
。我必须打印。
在同一个对象中包含多个列表的问题是,当我使用简单的for...in
循环解析对象时,解析器将无法工作并且只返回该对象的最后一个列表。
所以我的问题是:
谢谢!
答案 0 :(得分:0)
尝试使用encode' utf-8'或者' latin1'
with open ("verbatims.txt","r") as verbatims :
for line in verbatims:
line = line.decode("utf8")
tokens = nltk.tokenize.word_tokenize(line)
tokens = [x.encode('latin1') for x in tokens] # add this or try with the another
但如果你的标记为[[],[]],则应该在x中进行其他循环,例如(多个列表):
with open ("verbatims.txt","r") as verbatims :
for line in verbatims:
line = line.decode("utf8")
tokens = nltk.tokenize.word_tokenize(line)
tokens = [a.encode('latin1') for a in x for x in tokens]