数字化技能提升教程,数字化时代生存宝典

首页 / 开发 / 后端开发 / Python教程

Python模板

浏览:422
Python教程
Python教程
类型:后端开发

Python 是一门易于学习、功能强大的编程语言,它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python优雅的语法和动态类型以及解释型语言的本质,成为多数平台上写脚本和快速开发应用的理想语言。Python教程是站长百科推出的一种系统化的Python教程资源,Python教程通常包括基础概念、语法规则、常用库的介绍以及实际项目的实践,在这里可以零基础学Python从入门到精通,旨在帮助初学者逐步掌握Python编程语言。

一、模板类

模板(Template)类是 Python 标准库 string 模块中的一个通用的字符串模板类,它提供了一种简单易用的格式化字符串的方式。通过占位符的方式,用户可以在不更改应用逻辑的情况下定制自己的应用。

Pytho​n格式化输出》操作是通过占位符实现的,占位符由 $ 加上合法的 Python 标识符(只能包含字母、数字和下划线)构成。一旦使用花括号将占位符括起来,就可以在后面直接跟上更多的字母和数字而无需空格分割。$$ 将被转义成单个字符 $:

>>>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.'

二、自定义分隔符

模板 的子类可以自定义分隔符,这样可以使得字符串模板更加灵活和通用。例如,某个照片浏览器的批量重命名功能采用了百分号作为日期、照片序号和照片格式的占位符,这时就可以定义一个继承自 模板 类的子类,并指定其分隔符为百分号:

>>>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

Template 类的另一个重要的应用是将程序逻辑与多样的格式化输出细节分离开来,这使得对不同类型的文件(如 XML 文件、纯文本报表和 HTML 网络报表)使用自定义模板成为可能。

广告合作

广告合作

QQ群号:4114653

QQ群号:4114653

温馨提示:

  1. 本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。
  2. 本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。