View Categories

11.2. القوالب

2 دقيقة

جدول المحتويات

11.2. القوالب #

تتضمن وحدة السلسلة النصية فئة قالب متعددة الاستخدامات ببنية جملة مبسطة مناسبة للتعديل من قبل المستخدمين النهائيين. يتيح هذا للمستخدمين تخصيص تطبيقاتهم دون الحاجة إلى تعديلها.

يستخدم هذا التنسيق أسماءً بديلة مكونة من الرمز $ مع مُعرّفات بايثون صحيحة (أحرف أبجدية رقمية وشرطات سفلية). يتيح إحاطة العنصر البديل بأقواس إمكانية اتباعه بأحرف أبجدية رقمية إضافية دون مسافات فاصلة. كتابة $$ تُنشئ $ مُهجّرة واحدة:

>>> from string import Template
>>> t = Template('${village}folk send $$10 to $cause.')
>>> t.substitute(village='Nottingham', cause='the ditch fund')
'Nottinghamfolk send $10 to the ditch fund.'

تُثير دالة alternative() خطأً في المفتاح عند عدم توفير عنصر بديل في قاموس أو وسيطة كلمة رئيسية. بالنسبة لتطبيقات دمج البريد، قد تكون البيانات المُدخلة من المستخدم غير كاملة، وقد تكون دالة safe_substitute() أكثر ملاءمةً – فهي ستترك العناصر النائبة دون تغيير في حال فقدان البيانات:

>>> t = Template('Return the $item to $owner.')
>>> d = dict(item='unladen swallow')
>>> t.substitute(d)
Traceback (most recent call last):
  ...
KeyError: 'owner'
>>> t.safe_substitute(d)
'Return the unladen swallow to $owner.'

يمكن للفئات الفرعية للقالب تحديد فاصل مخصص. على سبيل المثال، قد تختار أداة إعادة تسمية الدفعات لمتصفح الصور استخدام علامات النسبة المئوية لعناصر نائبة مثل التاريخ الحالي، أو رقم تسلسل الصورة، أو تنسيق الملف:

>>> import time, os.path
>>> photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']
>>> class BatchRename(Template):
...     delimiter = '%'
>>> fmt = input('Enter rename style (%d-date %n-seqnum %f-format):  ')
Enter rename style (%d-date %n-seqnum %f-format):  Ashley_%n%f
>>> t = BatchRename(fmt)
>>> date = time.strftime('%d%b%y')
>>> for i, filename in enumerate(photofiles):
...     base, ext = os.path.splitext(filename)
...     newname = t.substitute(d=date, n=i, f=ext)
...     print('{0} --> {1}'.format(filename, newname))
img_1074.jpg --> Ashley_0.jpg
img_1076.jpg --> Ashley_1.jpg
img_1077.jpg --> Ashley_2.jpg

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

error: Content is protected !!
Scroll to Top