2

我正在尝试打开一个巨大的文本文件(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())

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

4

2 回答 2

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)

希望这可以帮助!

于 2013-08-11T21:41:43.843 回答
0

取决于你想做什么:

如果您真的想一次性对整个 1GB 执行正则表达式搜索,那么您没有太多选择。如果您现在使用的是 32 位版本,那么切换到 64 位 Python 可能就是其中之一。

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

于 2013-08-11T21:43:06.127 回答