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

StackOverflow https://stackoverflow.com/questions/14281

Вопрос

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

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

Это было полезно?

Решение

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

Однако существует модуль 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

Другие советы

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

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

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

Модуль zipfile на Python

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

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

Редактировать:Также обратите внимание, что, вероятно, гораздо разумнее просто использовать zipfile решение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top