Есть ли в zip-файлах модуль python для сопоставления регулярных выражений - PullRequest
4 голосов
/ 18 августа 2008

У меня более миллиона текстовых файлов, сжатых в 40 zip-файлов. У меня также есть список около 500 наименований моделей телефонов. Я хочу узнать, сколько раз конкретная модель упоминалась в текстовых файлах.

Существует ли какой-либо модуль python, который может выполнять сопоставление регулярных выражений для файлов, не распаковывая его. Есть ли простой способ решить эту проблему без разархивирования?

Ответы [ 4 ]

9 голосов
/ 18 августа 2008

Нет ничего, что автоматически сделает то, что вы хотите.

Однако, есть модуль zipfile для Python, который сделает это легко. Вот как перебирать строки в файле.

#!/usr/bin/python

import zipfile
f = zipfile.ZipFile('myfile.zip')

for subfile in f.namelist():
    print subfile
    data = f.read(subfile)
    for line in data.split('\n'):
        print line
0 голосов
/ 03 сентября 2008

Разве невозможно (по крайней мере теоретически) прочитать код ZIP Хаффмана в ZIP, а затем перевести регулярное выражение в код Хаффмана? Может ли это быть более эффективным, чем сначала распаковывать данные, а затем запускать регулярное выражение?

(Примечание: я знаю, что все будет не так просто: вам также придется иметь дело с другими аспектами ZIP-кодирования - макет файла, структуры блоков, обратные ссылки & mdash; но можно представить, что это может быть довольно легко .)

РЕДАКТИРОВАТЬ: Также обратите внимание, что, вероятно, гораздо разумнее просто использовать решение zipfile.

0 голосов
/ 18 августа 2008

Чтобы получить доступ к содержимому zip-файла, вы должны разархивировать его, хотя пакет zipfile делает это довольно легко, поскольку вы можете разархивировать каждый файл в архиве по отдельности.

Модуль zipfile Python

0 голосов
/ 18 августа 2008

Вы можете перебирать zip-файлы, читая отдельные файлы, используя модуль zipfile, и запускать для них свои регулярные выражения, исключая распаковку всех файлов одновременно.

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

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