我知道在论坛上有一些非常相似的帖子,但我需要这个来快速扫描一个文本文件。我必须通过1 GB文件运行500次检查并打印出包含某些短语的行,这是我的代码:
import re
with open('text.txt', 'r') as f:
searchstrings = ('aaAa','bBbb')
for line in f.readlines():
for word in searchstrings:
word2 = ".*" + word + ".*"
match = re.search(word2, line)
if match:
print word + " " + line
我试图让它返回包含这些短语的任何行,所以即使该行是“BBjahdAAAAmm”我想要它返回,因为它有aaaa。 aaAa和bBbb就是例子,列表完全不同。
答案 0 :(得分:2)
不要使用f.readlines()
您将整个1GB加载到内存中。一次读一个。
取而代之的是:
searchstrings = ('aaAa','bBbb')
with open('text.txt', 'r') as f:
for line in f:
for word in searchstrings:
if word.lower() in line.lower():
print word + " " + line
答案 1 :(得分:0)
你的意思是IGNORECASE?尝试re.search(word2,line,re.IGNORECASE)。