希望使用Python

时间:2016-03-18 01:34:04

标签: python regex

我知道在论坛上有一些非常相似的帖子,但我需要这个来快速扫描一个文本文件。我必须通过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就是例子,列表完全不同。

2 个答案:

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