Er det en python modul for regex matching i zip-filer

stemmer
4

Jeg har over en million tekstfiler komprimert i 40 zip-filer. Jeg har også en liste med ca 500 modellnavn telefoner. Jeg ønsker å finne ut hvor mange ganger en bestemt modell ble nevnt i tekstfiler.

Er det noen python-modul som kan gjøre en regex kamp på filene uten utpakking det. Er det en enkel måte å løse dette problemet uten utpakking?

Publisert på 18/08/2008 klokken 07:41
kilden bruker
På andre språk...                            


4 svar

stemmer
9

Det er ikke noe som automatisk vil gjøre hva du vil.

Men det er en python zipfile modul som vil gjøre dette enkelt å gjøre. Slik iterere over linjene i filen.

#!/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
Svarte 18/08/2008 kl. 08:19
kilden bruker

stemmer
0

Er det ikke (i hvert fall teoretisk) mulig å lese i ZIP er Huffman koding og deretter oversette regexp i Huffman-koden? Kan dette være mer effektiv enn første de-komprimere data, deretter kjører regexp?

(Merk: Jeg vet at det ikke ville være fullt så enkelt: du vil også måtte forholde seg til andre deler av ZIP koding-fil layout, blokkstrukturer, back-referanser-, men man tenker dette kan være ganske lett.)

EDIT: Merk også at det er nok mye mer fornuftig å bare bruke zipfileløsningen.

Svarte 03/09/2008 kl. 14:42
kilden bruker

stemmer
0

For å få tilgang til innholdet i en zip-fil du må pakke den, selv om zipfile pakken gjør dette ganske lett, som du kan pakke hver fil i et arkiv individuelt.

Python zipfile modul

Svarte 18/08/2008 kl. 08:10
kilden bruker

stemmer
0

Du kan sløyfe gjennom zip-filer, lese individuelle filer ved hjelp av zipfile modul og kjører din regex på disse, eliminere å pakke alle filene på en gang.

Jeg er ganske sikker på at du ikke kan kjøre en regex over komprimerte data, i alle fall ikke til relevante.

Svarte 18/08/2008 kl. 08:06
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more