简化文本搜索的python代码

时间:2013-06-20 12:30:05

标签: python text

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

2 个答案:

答案 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