هل هناك وحدة بايثون لمطابقة regex في الملفات المضغوطة

StackOverflow https://stackoverflow.com/questions/14281

سؤال

لدي أكثر من مليون ملف نصي مضغوط في 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 حل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top