打开巨大的文本文件并执行正则表达式搜索

时间:2013-08-11 21:35:28

标签: python regex text-mining

我正在尝试打开一个巨大的文本文件(1 GB)并执行一些文本挖掘 我愿意进行一些正则表达式搜索 当我使用read()函数时,我收到错误:

File "C:\Python33\lib\encodings\latin_1.py", line 26, in decode
return codecs.latin_1_decode(input,self.errors)[0]
MemoryError

我的代码是:

dataFile = open('data/AllData_2000001_3000000.txt', 'r', encoding="latin-1")
print(dataFile.read())

为了执行正则表达式搜索,打开文本的最佳方法是什么? 谢谢!

2 个答案:

答案 0 :(得分:5)

通过执行print(dataFile.read())您将整个文件加载到内存中,这就是您收到错误的原因。更好的方法是逐行:

dataFile = open('data/AllData_2000001_3000000.txt', 'r', encoding="latin-1")
for line in dataFile:
    #perform regex searching in each line here
    print(line)

希望这有帮助!

答案 1 :(得分:0)

取决于你想做什么:

如果您真的想要在整个1GB上进行正则表达式搜索,那么您没有很多选择。如果你现在使用的是32位版本,那么切换到64位Python可能就是一个。

您的文字文件是否按行或类似的方式组织?在这种情况下,您可以读取一行,处理它,转到下一行,依此类推。当然,这适用于您可以隔离的任何“块”。