【发布时间】:2016-04-05 15:37:32
【问题描述】:
我在 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 循环解析对象时,解析器将无法工作,只会返回对象的最后一个列表。
所以我的问题是:
- 这些对象怎么称呼?
- 如何解析这个对象?
谢谢!
【问题讨论】:
-
我怀疑您在 for 循环内部而不是外部调用
print(tokens)。嵌套列表将其内容包装在额外的方括号中,这里不是这种情况。此外,仅迭代最后一个列表这一事实强烈表明您只有一个列表作为返回变量。每次迭代,tokens都会被覆盖,所以显然print(tokens)会显示不同的内容。 -
您确定这是对 print(tokens) 的一次调用的输出,而不仅仅是 print(tokens) 被多次调用的结果吗?
-
哦,是的,没错。我的打印在循环内。
-
但是它仍然没有解决问题,即我在
tokens中只得到了unicode str.的最后一个。我确定这是我的循环有问题,但我无法解决:/
标签: python list token nltk tokenize