Сведения о вопросе

Sadijon

06:12, 16th August, 2020

Теги

python   regex   zip   text-processing    

Есть ли модуль python для сопоставления regex в файлах zip

Просмотров: 536   Ответов: 4

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

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



  Сведения об ответе

JUST___

03:30, 26th August, 2020

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

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

#!/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


  Сведения об ответе

lourence

06:05, 10th August, 2020

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

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


  Сведения об ответе

lesha

05:36, 2nd August, 2020

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

Модуль Python zip-файл


  Сведения об ответе

$DOLLAR

04:20, 19th August, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться