Samer Rahma نشر 19 مارس 2022 أرسل تقرير نشر 19 مارس 2022 (معدل) يعطيكم العافية... كتبت هذا الكود: with open(f, 'rb') as myfile: text = [s.strip() \ for s in myfile.readlines()] for t in text: x = t.strip().lower() if 'text' in x: continue لكن عند التنفيذ يعطيني خطأ في السطر الاخير: TypeError: a bytes-like object is required, not 'str' تم التعديل في 19 مارس 2022 بواسطة Ali Haidar Ahmad تعديل عنوان السؤال 2 اقتباس
0 Ali Haidar Ahmad نشر 19 مارس 2022 أرسل تقرير نشر 19 مارس 2022 المشكل تبدأ في السطر الأول، حيث أنك قمت بفتح الملف في الوضع الثنائي binary mode، وبالتالي البيانات التي تتم قراءتها ستكون ثنائية bytes objects، وبالتالي لايمكنك في السطر الأخير: if 'text' in x أن تستخدم معامل اختبار الاحتواء in لأن الكائن هنا ليس من الصنف str. لذا يجب عليك إما أن تقرأ الملف في وضع القراءة العادي 'r'، أو أن تحوّله إلى bytes object كالتالي: if b'text' in x: اقتباس
0 Wael Aljamal نشر 19 مارس 2022 أرسل تقرير نشر 19 مارس 2022 يمكنك فتح الملف و قراءته كنص عن طريق تمرير المعامل rt with open(fname, 'rt') as f: أما إن كنت تنوين قراءة الملف بترميز ثنائي rb يمكننا خلال الشيفرة إعادة تحويل الترميز ل utf-8 ليصبح نص من جديد باستخدام الدالة decode with open(fname, 'rb') as f: lines = [x.decode('utf8').strip() for x in f.readlines()] اقتباس
السؤال
Samer Rahma
يعطيكم العافية...
كتبت هذا الكود:
لكن عند التنفيذ يعطيني خطأ في السطر الاخير:
تعديل عنوان السؤال
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.