تقنية

Template في بايثون: الاستبدال الجزئي يبقي المفتاح المفقود

المفتاح b مفقود: خطأ عادي أو موضع باق
القالب $a/$b وقيمة a تساوي 4. [1] [2]

افحص ما بقي في النص. [1] [2]

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

substitute() يرفع KeyError للمفتاح المفقود؛ safe_substitute() يبقي موضعه. [1] [2]

  • عند غياب b، الاستبدال العادي يفشل. [1] [2]
  • الجزئي يعيد 4/$b في مثالنا. [1] [2]
  • $b يبقى حرفيًا؛ لا يصبح فراغًا أو قيمة افتراضية. [1] [2]
  • إضافة b=9 تعطي 4/9 بالطريقتين. [1] [2]
  • الجزئي يبقي أيضًا $ المنفرد في قالب معيب؛ نجاحه لا يثبت اكتمال القالب. [1] [2]

المثال

from string import Template
s=Template('$a/$b')
d={'a':'4'}
try:
 print(s.substitute(d))
except KeyError:
 print('KeyError')
print(s.safe_substitute(d))
print(s.safe_substitute(d,b='9'))

[1] [2]

المخرجات: KeyError، ثم 4/$b، ثم 4/9. [1] [2]

المفقود

وجود نص ناتج لا يعني أن كل المفاتيح عُوضت؛ اقرأ الموضع الباقي. [1] [2]

الإكمال

إكمال القاموس بالمفتاح الناقص يحل الموضع نفسه؛ الاستبدال العادي ينجح أيضًا مع القيمتين. [1] [2]

إضافة b بقيمة 9 تكمل الموضع الباقي
الجزئي قبل الإكمال وبعده. [1] [2]

القالب المعيب

$a/$ يعطي 4/$ بالجزئي مع a=4؛ العادي يرفع ValueError. [1] [2]

النطاق

اختبرنا 3.12.14 وstring.Template القياسي وقاموسًا عاديًا؛ الجزئي لا يضمن غياب كل الاستثناءات. [1] [2]

المراجع

  1. Python: القوالب النصية
  2. CPython 3.12.14: string.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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