Python 3: Поиск большого текстового файла с помощью REGEX - PullRequest
4 голосов
/ 03 марта 2012

Я хочу найти большой текстовый файл с помощью регулярных выражений и настроить следующий код:

import re

regex = input("REGEX: ")

SearchFunction = re.compile(regex)

f = open('data','r', encoding='utf-8')

result = re.search(SearchFunction, f)

print(result.groups())

f.close()

Конечно, это не работает, потому что второй аргумент для re.search должен бытьстрока или буфер.Однако я не могу вставить весь свой текстовый файл в строку, так как она слишком длинная (это означает, что это займет вечность).Какая альтернатива?

Ответы [ 2 ]

7 голосов
/ 03 марта 2012

Вы проверяете, соответствует ли шаблон каждой строке.Это не загрузит весь файл в память:

for line in f:
    result = re.search(SearchFunction, line)
5 голосов
/ 03 марта 2012

Вы можете использовать отображенный в память файл с модулем mmap .Думайте об этом как о файле, притворяющемся строкой (или противоположностью StringIO).Вы можете найти пример в этой статье Python Module of the Week о mmap Дуга Хеллмана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...