我正在寻找一种从python中的相当大的数据库中提取行的方法。我只需要保留那些包含我的关键字之一的关键字。我以为可以使用正则表达式来解决问题,所以我将下面的代码放在一起。不幸的是,这给了我一些错误(可能还因为我的关键字确实很大,几乎是500个,这些关键字写在文件listtosearch.txt中的不同行中)。
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
有什么建议吗?谢谢
炎炎设计
相关分类