Откройте огромный текстовый файл и выполните поиск по регулярному выражению

Я пытаюсь открыть огромный текстовый файл (1 ГБ) и выполнить анализ текста.
Я хочу выполнить поиск по регулярным выражениям.
Когда я использую функцию 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())

Как лучше всего открыть текст для выполнения поиска по регулярному выражению?
Спасибо!


person Presen    schedule 11.08.2013    source источник


Ответы (2)


Зависит от того, что вы хотите сделать:

Если вы действительно хотите выполнить поиск по регулярному выражению по всему 1 ГБ целиком, у вас не так много вариантов. Переход на 64-битный Python может быть одним из тех, кто сейчас использует 32-битную версию.

Организован ли ваш текстовый файл в строки или что-то подобное? В этом случае вы можете прочитать одну строку, обработать ее, перейти к следующей и так далее. Конечно, это работает с любым типом «чанка», который вы можете выделить.

person Michael    schedule 11.08.2013

Выполняя 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)

Надеюсь это поможет!

person Paulo Bu    schedule 11.08.2013