تقنية

itertext في بايثون: لماذا يختفي tail عند البدء بالابن؟

الأب ونصه ونص الابن وذيله
الأب. [1] [2]

موضع البدء يحدد حدود النص الداخلي. [1] [2]

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

itertext يستبعد ذيل عنصر البداية؛ قد يظهر الذيل عند البدء بأبيه. [1] [2]

  • نص الأب bud ونص الابن leaf. [1] [2]
  • ذيل الابن stone يقع بعده داخل الأب. [1] [2]
  • قائمة الأب: bud ثم leaf ثم stone. [1] [2]
  • قائمة الابن: leaf فقط، والذيل لم يحذف. [1] [2]
  • اختبرنا 3.12.14 على شجرة مؤلفة. [1] [2]

المثال

from xml.etree.ElementTree import (
    Element,SubElement)
root=Element('own')
root.text='bud'
child=SubElement(root,'child')
child.text='leaf'
child.tail='stone'
print(list(root.itertext()))
print(list(child.itertext()))
print(child.tail)

[1] [2]

حدود النص

المصدر هنا يعيد النص الداخلي بترتيب المستند. الذيل التالي للابن داخل الأب، لكنه خارج الابن نفسه. السطر الأخير يطبع stone؛ الاستبعاد من القائمة ليس حذفًا من السمة. [1] [2]

نص الابن دون ذيله
الابن. [1] [2]

النطاق

أنشأنا العناصر في الذاكرة دون قراءة ملف. لا نغير الشجرة أثناء الاجتياز، ولا نتحقق من صحة مستند أو ننسب النتيجة إلى أداة XML أخرى. [1] [2]

المراجع

  1. Python 3.12: Element text, tail and itertext
  2. CPython 3.12.14: _elementtree.c
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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