تقنية

tostring في ElementTree: هل تعيد دائمًا bytes؟

tostring الافتراضية تعيد bytes.
الافتراضي بايتات.

tostring تعيد bytes، لكن encoding="unicode" يجعلها تعيد str. [1]

الخلاصة السريعة

لا؛ اختيار unicode يعطي نصًا. [1]

  • tostring تعيد bytes، لكن encoding="unicode" يجعلها تعيد str. [1]
  • الترميز الافتراضي US-ASCII؛ التمثيل يشمل العنصر وأبناءه. [1]
  • على CPython 3.12.14، نمثل leaf بنص bud بالافتراضي ثم unicode. [1]
  • في مثالنا، التمثيلان يحملان XML نفسه؛ نوع wire هو bytes، ونوع text هو str. [1]
  • تحكم: يطابقان بايتات ونصًا مؤلفين مستقلًا؛ قراءتهما تستعيد bud؛ utf-8 يعيد bytes؛ تبقى الشجرة. [1]

اختيار نوع الخرج

tostring تعيد bytes، لكن encoding="unicode" يجعلها تعيد str. [1]

الافتراضي ونطاق التمثيل

الترميز الافتراضي US-ASCII؛ التمثيل يشمل العنصر وأبناءه. [1]

عنصر واحد

على CPython 3.12.14، نمثل leaf بنص bud بالافتراضي ثم unicode. [1]

import xml.etree.ElementTree as ET root=ET.fromstring("<leaf>bud</leaf>") wire=ET.tostring(root) text=ET.tostring(root,encoding="unicode") [1]

encoding="unicode" يعيد str من العنصر نفسه.
unicode نص.

النوع والتحكم

في مثالنا، التمثيلان يحملان XML نفسه؛ نوع wire هو bytes، ونوع text هو str. [1]

print(type(wire).__name__,type(text).__name__) print(ET.fromstring(wire).text,ET.fromstring(text).text) [1]

تحكم: يطابقان بايتات ونصًا مؤلفين مستقلًا؛ قراءتهما تستعيد bud؛ utf-8 يعيد bytes؛ تبقى الشجرة. [1]

المراجع

  1. Python ElementTree

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.