2

我是 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
4

2 回答 2

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
于 2013-06-20T12:36:51.717 回答
1

您可以使用正则表达式一次检查所有子字符串。看看这个答案的例子:检查以确保字符串不包含多个值

于 2013-06-20T12:36:33.453 回答