我正在寻找一种从 python 中相当大的数据库中提取行的方法。我只需要保留那些包含我的关键字之一。我想我可以使用正则表达式来解决这个问题,我把下面的代码放在一起。不幸的是,它给了我一些错误(也可能是因为我的关键字,它们写在文件 listtosearch.txt 中的单独行中,确实数量很大,接近 500)。
import re
data = open('database.txt').read()
fileout = open("fileout.txt","w+")
with open('listtosearch.txt', 'r') as f:
keywords = [line.strip() for line in f]
pattern = re.compile('|'.join(keywords))
for line in data:
if pattern.search(line):
fileout.write(line)
我还尝试使用双循环(在关键字列表和数据库行中),但运行时间太长。
我得到的错误是:
Traceback (most recent call last):
File "/usr/lib/python2.7/re.py", line 190, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.7/re.py", line 240, in _compile
p = sre_compile.compile(pattern, flags)
File "/usr/lib/python2.7/sre_compile.py", line 511, in compile
"sorry, but this version only supports 100 named groups"
AssertionError: sorry, but this version only supports 100 named groups
有什么建议吗?谢谢