我是python的初学者,我需要检查一个巨大的txt文件中是否存在一组给定的字符串。到目前为止,我已经编写了这段代码,它在我的数据库的轻量子样本上运行时没有任何问题。问题是搜索整个数据库需要10个多小时,我正在寻找一种方法来加快这个过程。
到目前为止,代码从我放在一起的txt(list.txt)中读取字符串列表,并搜索数据库每行中的每个项目(hugedataset.txt)。我的最终输出应该是数据库中存在的项目列表(或者,不存在的项目列表)。我敢打赌,有一种更有效的方法可以做事......
感谢您的支持!
import re
fobj_in = open('hugedataset.txt')
present=[]
with open('list.txt', 'r') as f:
list1 = [line.strip() for line in f]
print list1
for l in fobj_in:
for title in list1:
if title in l:
print title
present.append(title)
set=set(presenti)
print set
答案 0 :(得分:2)
由于您不需要任何每行信息,因此您可以针对每个字符串一次性搜索整个内容:
data = open('hugedataset.txt').read() # Assuming it fits in memory
present=[] # As @svk points out, you could make this a set
with open('list.txt', 'r') as f:
list1 = [line.strip() for line in f]
print list1
for title in list1:
if title in data:
print title
present.append(title)
set=set(present)
print set
答案 1 :(得分:1)
您可以使用正则表达式通过单次传递检查所有子字符串。请在此答案中查看示例:Check to ensure a string does not contain multiple values