تقنية

col_offset في بايثون: هل يصلح لفهرسة str مباشرة؟

وحدة الإزاحة
تفسير توضيحي [1] [2]

انتبه إلى وحدة إزاحة العمود. [1] [2]

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

لا دائمًا؛ يختلف التقطيع في مثالنا. [1] [2]

  • مصدرنا é=4; leaf=9 في سطر واحد. [1] [2]
  • الإزاحتان للإسناد الثاني 6 و12. [1] [2]
  • get_source_segment يعيد leaf=9. [1] [2]
  • التقطيع يعيد eaf=9؛ التحكم ASCII يعطي تطابقًا. [1] [2]
  • 3.12.14: إزاحتا UTF-8 بالبايت، دون تشغيل المصدر. [1] [2]

المثال

مصدرنا é=4; leaf=9 في سطر واحد. [1] [2]

import ast
s="é=4; leaf=9"
n=ast.parse(s).body[1]
print(n.col_offset,n.end_col_offset)
print(ast.get_source_segment(s,n))
print(s[n.col_offset:n.end_col_offset])

[1] [2]

استخراج وتقطيع

الإزاحتان للإسناد الثاني 6 و12. [1] [2]

get_source_segment يعيد leaf=9. [1] [2]

التقطيع يعيد eaf=9؛ التحكم ASCII يعطي تطابقًا. [1] [2]

النتيجة: 6 12، leaf=9، eaf=9. [1] [2]

استخراج الإسناد
تفسير توضيحي [1] [2]

وحدة العمود

3.12.14: إزاحتا UTF-8 بالبايت، دون تشغيل المصدر. [1] [2]

المحرف é بايتان في UTF-8؛ فهارس str تحسب المحارف. [1] [2]

النطاق

في التحكم b=4; leaf=9، يعيد الأسلوبان leaf=9. [1] [2]

الشجرة والمصدر لم يتغيرا في فحوص الاستخراج. [1] [2]

المراجع

  1. Python 3.12: UTF-8 byte columns
  2. CPython 3.12.14: source extraction
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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

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