【问题标题】:Iterate through python list遍历python列表
【发布时间】:2013-07-13 16:59:49
【问题描述】:

我有如下 UTF-8 Unicode 文本文件(非英语)

所以我在python中将编码标记为UTF-8并将文件导入python。

# -*- coding: utf-8 -*-

我用“。”标记了句子。并得到句子的列表。

现在我需要与另一个 unicode 单词列表进行比较,并找出每个句子中是否有这些单词。

这是我的代码。但它只显示了第一个匹配项。

for sentence in sentences:
    for word in sentence.split(" "):
        if word in pronouns:
            print sentence

编辑:

最后我注意到源文本文件中有无效的 unicode 字符。 这里描述Tokenizing unicode using nltk

【问题讨论】:

  • 您向我们展示的内容并不明显。你确认句子中有多少项目了吗?大海捞针不止一个代词吗?
  • 如您所见,有 6 个句子。并且有一组代词。这些句子中的每一个都以列表中的一个代词开头。所以它假设要一个一个地显示所有的句子。
  • 您最好只使用sentence.split()。某些字母可能包含与" " 不匹配的空白字符。
  • 还要注意三个句子以同一个代词开头。
  • 对不起,我不够清楚。你有一个名为“句子”的列表,你认为它有 6 个项目,因为你的眼球告诉你我们的数据中有 6 个句子。但也许程序看事物的方式与你的眼睛看事物的方式不同。如果您尝试 print('len(sentences) = ' + len(sentences)) 输出是什么?你真的有你期望列表中的 6 个句子吗?我正在讨论与@KarTo 相同的编码等问题,明智地建议需要将其作为问题的可能来源进行探索。

标签: python list nltk


【解决方案1】:

我试图模拟你的问题,但我得到了预期的结果,可能问题出在编码或你的代词列表中。

pronouns = ['aa','bb','cc']

sentences = ['aa dkdje asdf aesr','bb asersada','cc ase aser sa sa c ','aa saef sf se s', 'aa','bb']

for sentence in sentences:
    for word in sentence.split(" "):
        if word in pronouns:
            print (sentence)

代码的输出是:

aa dkdje asdf aesr
bb asersada
cc ase aser sa sa c 
aa saef sf se s
aa
bb

希望这有帮助。

【讨论】:

  • 谢谢。但对我来说它没有用。可能是 Unicode 必须以其他方式处理。
猜你喜欢
  • 2013-02-18
  • 1970-01-01
  • 2018-03-08
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多