هل هناك وحدة بايثون لمطابقة regex في الملفات المضغوطة
-
08-06-2019 - |
سؤال
لدي أكثر من مليون ملف نصي مضغوط في 40 ملفًا مضغوطًا.لدي أيضًا قائمة تضم حوالي 500 اسم طراز للهواتف.أريد معرفة عدد المرات التي تم فيها ذكر نموذج معين في الملفات النصية.
هل هناك أي وحدة بيثون يمكنها إجراء مطابقة regex على الملفات دون فك ضغطها.هل هناك طريقة سهلة لحل هذه المشكلة دون فك الضغط؟
المحلول
لا يوجد شيء سيفعل ما تريد تلقائيًا.
ومع ذلك، هناك وحدة python zipfile التي ستجعل من السهل القيام بذلك.إليك كيفية التكرار على الأسطر الموجودة في الملف.
#!/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
نصائح أخرى
يمكنك تكرار الملفات المضغوطة، وقراءة الملفات الفردية باستخدام وحدة zipfile وتشغيل التعبير العادي الخاص بك عليها، والتخلص من فك ضغط جميع الملفات مرة واحدة.
أنا متأكد تمامًا من أنه لا يمكنك تشغيل التعبير العادي على البيانات المضغوطة، على الأقل ليس بشكل مفيد.
للوصول إلى محتويات ملف مضغوط، يجب عليك فك ضغطه، على الرغم من أن حزمة الملف المضغوط تجعل هذا الأمر سهلاً إلى حد ما، حيث يمكنك فك ضغط كل ملف داخل الأرشيف على حدة.
أليس من الممكن (على الأقل من الناحية النظرية) قراءة ترميز هوفمان ZIP ثم ترجمة التعبير العادي إلى كود هوفمان؟هل يمكن أن يكون هذا أكثر كفاءة من فك ضغط البيانات أولاً، ثم تشغيل التعبير العادي؟
(ملحوظة:أعلم أن الأمر لن يكون بهذه البساطة:سيتعين عليك أيضًا التعامل مع جوانب أخرى من ترميز ZIP - تخطيط الملف، وهياكل الكتل، والمراجع الخلفية - ولكن يمكن للمرء أن يتخيل أن هذا قد يكون خفيفًا إلى حد ما.)
يحرر:لاحظ أيضًا أنه ربما يكون من المنطقي أكثر استخدام zipfile
حل.