【问题标题】:Open huge text file and perform regex searching打开巨大的文本文件并执行正则表达式搜索
【发布时间】:2013-08-13 04:05:56
【问题描述】:

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

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

【问题讨论】:

    标签: python regex text-mining


    【解决方案1】:

    通过 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)
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      取决于你想做什么:

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

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

      【讨论】:

        猜你喜欢
        • 2015-05-31
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-15
        • 2022-07-11
        • 2020-09-24
        相关资源
        最近更新 更多