اذهب إلى المحتوى

السؤال

نشر

أحاول التدرب على سحب البيانات web scraping لكن عندما أحاول أن أقوم بتخزين محتوى الصفحات في ملف أحصل على الخطأ التالي:

TypeError: string argument expected, got 'bytes

سؤالي هو كيف أقوم بتحويل نص من نوع byte مثل b'content' إلى نص عادي 'content'؟

Recommended Posts

  • 1
نشر

عندما تقوم بسحب البيانات من الويب فانت تحصل عليها على شكل خام ثنائي binary أو byte type 

وعندما تقوم بحفظها في ملف بإستخدام الدالة المخصصة لذلك تحصل على هذا الخطأ

TypeError: string argument expected, got 'bytes

ومعناه أن دالة الحفظ تتوقع المدخل أن يكون من نوع سلسلة نصية string لحفظها في الملف ولكن حصلت على نوع byte type
لهذا يجب عليك أولاً تحويل البيانات الذي تريد حفظها من نوع byte الى نوع string

وإذا أردت تحويل من نوع byte

b = b"content"
type(b)
# <class 'bytes'>

الى نوع string فيمكنك إستخدام هذا الكود

bytes = b'content'
bytes.decode("utf-8") 

او يمكنك إستخدام هذا الكود ايضاً

b = b'content'
str(b, 'UTF-8')

 

  • 0
نشر

يمكنك استخدام الدالة decode لتحويل من byte الى string , لاحظ المثال التالي

print(b"Ahmed")

سوف تكون النتيحة كالتالي

b'Ahmed'

بعد استخدام الدالة decode سوف يصبح شكل الكود كالتالي

print(b"Ahmed".decode("utf-8"))

النتيحة
Ahmed

 

  • 0
نشر

أيضاً بالإضافة لاستخدام الدالة .decode بهذا الشكل

.decode("utf-8")

في الإصدار الثالث من python ال encoding  الإفتراضي أصبح "utf-8" لذلك يمكنك استخدام الدالة بالشكل التالي في الإصدار الثالث

print(b"Ahmed".decode())

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...