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?

È stato utile?

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.

Modulo zipfile Python

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top