
Έχω πάνω από ένα εκατομμύριο αρχεία κειμένου συμπιέζονται σε 40 αρχεία zip. Έχω επίσης μια λίστα με περίπου 500 μοντέλο ονόματα των τηλεφώνων. Θέλω να μάθετε πόσες φορές αναφέρθηκε το συγκεκριμένο μοντέλο στα αρχεία κειμένου.


Υπάρχει κάποια μονάδα πύθωνα που μπορεί να κάνει έναν αγώνα regex για τα αρχεία χωρίς αποσυμπίεση εκεί. Υπάρχει ένας απλός τρόπος για να λυθεί αυτό το πρόβλημα χωρίς αποσυμπίεση εκεί;

 
Είναι μια μονάδα python για την τυπική έκφραση που ταιριάζουν σε αρχεία zip υπάρχει
===================================================================================



Δεν υπάρχει τίποτα που θα κάνει αυτόματα ό, τι θέλετε.


Ωστόσο, υπάρχει μια ενότητα zipfile python που θα κάνουν αυτό το εύκολο να το κάνουμε. Εδώ είναι πώς να μετακινηθείτε πάνω από τις γραμμές του αρχείου.



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

```
 

Θα μπορούσατε βρόχο μέσα από τα αρχεία zip, διαβάζοντας μεμονωμένα αρχεία χρησιμοποιώντας το zipfile μονάδα και να λειτουργήσει regex σας σε αυτά, εξαλείφοντας να αποσυμπιέσετε όλα τα αρχεία ταυτόχρονα. 


Είμαι αρκετά σίγουρος ότι δεν μπορείτε να εκτελέσετε μια τυπική έκφραση πάνω από τα συμπιεσμένα δεδομένα, τουλάχιστον όχι με νόημα.

 

Για να αποκτήσετε πρόσβαση στα περιεχόμενα ενός αρχείου zip θα πρέπει να το αποσυμπιέσετε, αν και το αρχείο zip πακέτο κάνει αυτό αρκετά εύκολο, όπως μπορείτε να αποσυμπιέσετε κάθε αρχείο μέσα σε ένα αρχείο ξεχωριστά.


[zipfile μονάδα Python](http://docs.python.org/lib/module-zipfile.html)

 

Δεν είναι (τουλάχιστον θεωρητικά) δυνατό, να διαβαστεί σε Huffman κωδικοποίηση του ZIP και στη συνέχεια να μεταφράσει το regexp στον κώδικα Huffman; Θα μπορούσε να είναι πιο αποτελεσματική από ό, τι το πρώτο de-συμπίεση των δεδομένων, στη συνέχεια, την εκτέλεση της κανονικής έκφρασης;


(Σημείωση: Το ξέρω ότι δεν θα ήταν αρκετά απλό: θα ήθελα επίσης να ασχοληθεί με άλλες πτυχές της διάταξης των ΗΠΑ ταχυδρομικός κωδικοποίηση αρχείου, κατασκευές μπλοκ, πίσω-αναφορές-αλλά ένα φαντάζεται αυτό θα μπορούσε να είναι αρκετά ελαφρύ.)


EDIT: Επίσης, σημειώστε ότι είναι πιθανώς πολύ πιο λογικό να χρησιμοποιήσετε μόνο την `zipfile`λύση.

 