我经常要在许多文件中搜索许多单词(1000+)(百万+)。我需要匹配单词的位置(如果匹配)。
如此缓慢的伪代码版本
for text in documents:
for word in words:
position = search(word, text)
if position:
print word, position
有没有快速的Python模块可以做到这一点?或者我应该自己实施一些东西?
答案 0 :(得分:4)
对于快速准确文本,多关键字搜索,请尝试使用acora - http://pypi.python.org/pypi/acora/1.4
如果你想要一些额外的东西 - 结果相关性,接近匹配,字根等,飞快移动可能会更好 - http://pypi.python.org/pypi/Whoosh/1.4.1
我不知道如何扩展到数百万个文档,但不需要很长时间才能找到答案!
答案 1 :(得分:1)
grep出了什么问题?
所以你必须使用python?怎么样:
import subprocess
subprocess.Popen('grep <pattern> <file>')
这是疯了。但是嘿!你正在使用python; - )
答案 2 :(得分:0)
假设documents
是一个字符串列表,您可以使用text.index(word)
查找第一个匹配项,使用text.count(word)
查找总发生次数。您的伪代码似乎假设单词只会出现一次,因此text.count(word)
可能是不必要的。