ماژول string شامل کلاس Template منعطفی با نحو سادهشده است که برای ویرایش توسط کاربر نهایی مناسب است. این به کاربران امکان میدهد برنامههایشان را بدون تغییر خود برنامه سفارشیسازی کنند.
قالب از نگهدارندههای مکانی تشکیل شده با $ با شناسههای معتبر پایتون. احاطه نگهدارنده با آکولاد امکان استفاده از حروف الفبایی بیشتر بدون فاصله را میدهد. نوشتن $$ یک $ فرار شده واحد ایجاد میکند:
>>> 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.'
متد substitute() وقتی نگهدارندهای در دیکشنری یا آرگومان کلیدی ارائه نشود KeyError ایجاد میکند. برای برنامههای ادغام نامهای، دادههای ارائه شده توسط کاربر ممکن است ناقص باشند و متد 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.'
زیرکلاسهای Template میتوانند جداکننده سفارشی مشخص کنند. به عنوان مثال، ابزار تغییر نام دستهای برای یک مرورگر عکس ممکن است علامت درصد را برای نگهدارندهها انتخاب کند مانند تاریخ جاری، شماره توالی تصویر یا قالب فایل:
>>> 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 را فراهم میکند.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://docs.python.org/3/tutorial