我需要查找给定文档是否包含单词列表。 例如,
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中。
欢迎任何优化此问题的建议。
答案 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