كيفية الإصلاح: خطأ في الكتابة: كائن السلسلة أو البايتات المتوقعة


الخطأ الذي قد تواجهه عند استخدام بايثون هو:

 TypeError : expected string or bytes-like object

يحدث هذا الخطأ عادةً عند محاولة استخدام الدالة re.sub() لاستبدال بعض الأنماط في كائن ما ولكن الكائن الذي تعمل معه ليس عبارة عن سلاسل كاملة.

يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.

كيفية إعادة إنتاج الخطأ

لنفترض أن لدينا قائمة القيم التالية:

 #define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']

لنفترض الآن أننا نحاول استبدال كل حرف غير حرفي في القائمة بسلسلة فارغة:

 import re

#attempt to replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', x)

TypeError : expected string or bytes-like object

نتلقى خطأ لأن بعض القيم في القائمة ليست سلاسل.

كيفية اصلاح الخطأ

أسهل طريقة لإصلاح هذا الخطأ هي تحويل القائمة إلى كائن سلسلة عن طريق تغليفها في عامل التشغيل str() :

 import re

#replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', str (x))

#display results
print (x)

A B C D E

لاحظ أننا لا نتلقى خطأ لأننا استخدمنا str() لتحويل القائمة إلى كائن سلسلة أولاً.

والنتيجة هي القائمة الأصلية مع استبدال كل حرف غير حرف بمسافة.

ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة re.sub() هنا .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:

كيفية إصلاح KeyError في الباندا
كيفية الإصلاح: خطأ القيمة: غير قادر على تحويل float NaN إلى int
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *