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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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: اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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()] اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Samer Rahma
يعطيكم العافية...
كتبت هذا الكود:
لكن عند التنفيذ يعطيني خطأ في السطر الاخير:
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.