الفرق بين المراجعتين لصفحة: «Python/string/Template/safe substitute»
لا ملخص تعديل |
طلا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:التابع <code>Template.safe_substitute()</code> في بايثون}}</noinclude> | <noinclude>{{DISPLAYTITLE:التابع <code>Template.safe_substitute()</code> في بايثون}}</noinclude> | ||
هذا التابع مشابه للتابع <code>[[Python/string/Template/substitute|Template.substitute()]]</code> ، باستثناء أنّه لا يطلق خطأً أو [[Python/exceptions|استثناءً]] عند حدوث مشكلة أثناء عملية الاستبدال. | هذا التابع مشابه للتابع <code>[[Python/string/Template/substitute|Template.substitute()]]</code> ، باستثناء أنّه لا يطلق خطأً أو [[Python/exceptions|استثناءً]] عند حدوث مشكلة أثناء عملية الاستبدال. | ||
مراجعة 04:50، 18 يونيو 2018
هذا التابع مشابه للتابع Template.substitute()
، باستثناء أنّه لا يطلق خطأً أو استثناءً عند حدوث مشكلة أثناء عملية الاستبدال.
البنية العامة
safe_substitute(mapping, **kwds)
المعاملات
mapping
أي كائن شبيه بالقاموس يتضمّن مفاتيح مطابقة للمعرّفات المستخدمة في القالب. ويمكن بدلًا من ذلك أيضًا تقديم معاملات مفتاحية، تكون فيها الكلمات المفتاحية مطابقة للمعرّفات المستخدمة في القالب.
عند استخدام المعامل mapping
مع المعاملات المفتاحية، تأخذ المعاملات المفتاحية الأولوية في حال وجود معرّفات متكرّرة بينهما.
القيمة المعادة
يعيد التابع سلسلة نصية جديدة ناتجة عن إجراء الاستبدالات على السلسلة النصية الأصلية.
هذا التابع مشابه للتابع Template.substitute()
باستثناء أنّه في حال غياب المعرّفات من المعامل mapping
أو المعاملات المفتاحية، فلا تطلق اللغة الاستثناء KeyError
، بل يظهر المعرّف الأصلي في السلسلة النصية الناتجة كما هو. إلى جانب ذلك، لا يتسبب ظهور العلامة $
في بقية أجزاء السلسلة بإطلاق الخطأ ValueError
بل يبقى الرمز كما هو.
صحيح أنّ هذا التابع يطلق بعض الاستثناء، ولكن سمّي هذا التابع بالآمن "safe" لأنّ عمليات الاستبدال تحاول دومًا إعادة سلسلة نصية قابلة للاستخدام عوضًا عن إطلاق الاستثناءات.
في الواقع، هذا التابع أبعد ما يكون عن الأمان، لأنّه سيتجاهل وبصمت جميع القوالب غير السليمة والتي تتضمّن فواصل معلقة، وأقواس غير متطابقة، ومعرّفات تستخدم صيغة غير صحيحة.
أمثلة
يبين المثال التالي النتائج المعادة من استخدام التابع:
>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'
>>> d = dict(who='tim')
>>> Template('Give $who $100').substitute(d)
Traceback (most recent call last):
...
ValueError: Invalid placeholder in string: line 1, col 11
>>> Template('$who likes $what').substitute(d)
Traceback (most recent call last):
...
KeyError: 'what'
>>> Template('$who likes $what').safe_substitute(d)
'tim likes $what'
انظر أيضًا
- التابع
Template.substitute()
: يؤدي هذا التابع عملية الاستبدال بالاعتماد على القالب ويعيد سلسلة نصية جديدة.