C'è un modulo python per l'espressione regolare corrispondente nel file zip
-
08-06-2019 - |
Domanda
Ho più di un milione di file di testo compresso in 40 file zip.Anche io ho una lista di circa 500 nomi di modelli di telefoni.Io voglio trovare il numero di volte che un particolare modello è stato menzionato nel file di testo.
C'è qualche modulo python che può fare una regex match sul file senza decompressione esso.C'è un modo semplice per risolvere questo problema senza decompressione?
Soluzione
Non c'è niente che farà automaticamente quello che vuoi.
Tuttavia, esiste un modulo zipfile in Python che lo renderà facile da fare. Ecco come scorrere le righe nel file.
#!/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
Altri suggerimenti
Puoi scorrere i file zip, leggere i singoli file usando il modulo zipfile ed eseguire regex su quelli, eliminando la decompressione di tutti i file contemporaneamente.
Sono abbastanza certo che non puoi eseguire una regex sui dati compressi, almeno non in modo significativo.
Per accedere al contenuto di un file zip devi decomprimerlo, sebbene il pacchetto zipfile lo renda abbastanza semplice, dato che puoi decomprimere ogni file all'interno di un archivio singolarmente.
Non è (almeno teoricamente) possibile leggere nel codice Huffman di ZIP e quindi tradurre il regexp nel codice Huffman? Potrebbe essere più efficiente di prima decomprimere i dati, quindi eseguire regexp?
(Nota: so che non sarebbe così semplice: dovresti anche occuparti di altri aspetti della codifica ZIP - layout dei file, strutture a blocchi, riferimenti a ritroso - ma si immagina che potrebbe essere abbastanza leggero .)
EDIT: nota anche che probabilmente è molto più sensato usare la soluzione zipfile
.