Frage

Ich habe über eine million text-Dateien komprimiert in 40-zip-Dateien.Ich habe eine Liste von über 500 Modell-Namen der Telefone.Ich möchte herausfinden, wie oft ein bestimmtes Modell erwähnt wurde, in den text-Dateien.

Gibt es eine python-Modul, die können eine regex-übereinstimmung auf die Dateien, ohne Sie vorher zu entpacken es.Gibt es eine einfache Art und Weise dieses problem zu lösen, ohne Sie vorher zu entpacken?

War es hilfreich?

Lösung

Es gibt nichts, das automatisch tun, was Sie wollen.

Allerdings gibt es eine python zipfile-Modul, machen dies einfach zu tun.Hier ist, wie zu iterieren über die Zeilen in der Datei.

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

Andere Tipps

Sie könnten eine Schleife durch die zip-Dateien, Lesen von einzelnen Dateien mithilfe der zipfile-Modul und läuft Ihre regex auf die Beseitigung entpacken Sie alle Dateien auf einmal.

Ich bin mir ziemlich sicher, dass Sie nicht ausgeführt werden kann eine regex über die gezippte Daten, zumindest nicht sinnvoll.

Um Zugriff auf den Inhalt einer zip-Datei Sie haben, um Sie zu Dekomprimieren, obwohl das zipfile-Paket macht das ziemlich einfach, Sie können entpacken Sie jede Datei in ein Archiv individuell.

Python zipfile-Modul

Ist es nicht (zumindest theoretisch) möglich, zu Lesen in der ZIP ist die Huffman-Codierung und dann übersetzen Sie die regexp-in der Huffman-code?Könnte es effizienter sein, als erste de-komprimieren Sie die Daten, danach läuft die regexp?

(Hinweis:Ich weiß, es wäre nicht ganz so einfach:Sie hätte sich auch mit anderen Aspekten der ZIP—Verschlüsselung-Datei-layout, block-Strukturen, back-Referenzen—aber man Stelle sich vor, dies könnte ziemlich leicht.)

EDIT:Beachten Sie auch, dass es wahrscheinlich viel sinnvoller, nur die zipfile Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top