python 文件中搜索字符串_python – 有效地搜索海量文件中的字符串

我发现了这个想法的变种,但没有一个可以让我(对python来说很新)到我需要的地方.

这是场景:

>我有一个巨大的27 gig hashfile.txt,它由独立的字符串组成.

>我需要逐行解析这个文件,搜索另一个不那么大(~800mb)的addresses.txt文件中的匹配项

>找到匹配项时,需要将其写入outfile.txt

我目前的代码已尽可能优化,但只能达到150行/秒.考虑到我的hashfile.txt中有超过15亿行,任何优化都会有所帮助.

fin = 'hashed.txt'

nonzeros = open('addrOnly.txt', 'r')

fout = open('hits.txt', 'w')

lines = nonzeros.read()

i = 0

count = 0

with open(fin, 'r') as f:

for privkey in f:

address = privkey.split(", ")[0]

if address in lines:

fout.write(privkey)

i = i+1

if i%100 == 0:

count = count + 100

print "Passed: " + str(count)

解决方法:

您要实现的可能是Rabin-Karp string search.当您在某些语料库中同时搜索多个字符串时,它非常高效.

由于您一次搜索多个地址,因此您可能希望对addresses.txt中的条目进行哈希处理,并在每次迭代时将它们与Rabin-Karp哈希进行一次性比较.阅读有关Rabin-Karp中滚动哈希的更多信息,您将看到它是如何工作的.

因为Rabin-Karp要求所有图案长度相同;在实践中,所有地址都可能具有一些不可忽略的长度,您可以将它们全部截断为相同(不太短)的长度并使用前缀进行散列.此外,您可能希望将Rabin-Karp哈希修改为对空白不变,并且在地址格式方面存在细微差别,并且还要定义一个类似于确认匹配的自定义字符串比较器.

标签:python,optimization,search,large-files

来源: https://codeday.me/bug/20190529/1179199.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值