查找给定文档是否包含单词列表

时间:2015-05-26 02:23:41

标签: python data-structures

我需要查找给定文档是否包含单词列表。 例如,

list_of_words = [ 'stackoverflow', 'sun' ]
data = "stackoverflow is awesome"

预期输出为('stackoverflow', 1)。即( word, position_of_the_word)

list_of_words的大小为2000-3000。

我正在努力优化现有代码。现有代码从list_of_words形成正则表达式并在数据中找到它们。实现是在python中。

欢迎任何优化此问题的建议。

3 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用find函数和列表推导。在不知道您的确切需求的情况下,很难优化您的代码。例如,如果stackoverflow在数据字符串中出现两次,该怎么办?什么是所需的输出?

list_of_words = [ 'stackoverflow', 'sun' ]
data = "stackoverflow is awesome"

print [(word, data.find(word)+1) for word in list_of_words if word in data]

结果:

[('stackoverflow', 1)]

答案 1 :(得分:0)

如果您将单词列表排序为一个列表,并将文档中的所有单词排序为另一个列表,则可以使用bisect模块查找文档中单词列表中的第一个单词,然后使用该单词作为下一个的起始位置。

答案 2 :(得分:0)

在list_of_words上构建Trie树,然后将文档应用于Trie