python的Template使用指南


Posted in Python onSeptember 11, 2014

Template无疑是一个好东西,可以将字符串的格式固定下来,重复利用。同时Template也可以让开发人员可以分别考虑字符串的格式和其内容了,无形中减轻了开发人员的压力。

Template属于string中的一个类,所以要使用的话可以用以下方式调用

from string import Template

Template有个特殊标示符$,它具有以下的规则:

它的主要实现方式为$xxx,其中xxx是满足python命名规则的字符串,即不能以数字开头,不能为关键字等

如果$xxx需要和其他字符串接触时,可用{}将xxx包裹起来(以前似乎使用'()',我的一本参考书上是这样写的,但是现在的版本应该只能使用'{}')。例如,aaa${xxx}aaa

Template中有两个重要的方法:substitute和safe_substitute.

这两个方法都可以通过获取参数返回字符串

>>s=Template(There $a and $b)
>>print s.subtitute(a='apple',b='banana')
There apple and banana
>>print s.safe_substitute(a='apple',b='banbana')
There apple and banbana

还可以通过获取字典直接传递数据,像这样

>>s=Template(There $a and $b)
>>d={'a':'apple','b':'banbana'}
>>print s.substitute(d)
There apple and banbana

它们之间的差别在于对于参数缺少时的处理方式。

Template的实现方式是首先通过Template初始化一个字符串。这些字符串中包含了一个个key。通过调用substitute或safe_subsititute,将key值与方法中传递过来的参数对应上,从而实现在指定的位置导入字符串。这个方式的一个好处是不用像print ‘%s'之类的方式,各个参数的顺序必须固定,只要key是正确的,值就能正确插入。通过这种方式,在插入很多数据的时候就可以松口气了。可是即使有这样偷懒的方法,依旧不能保证不出错,如果key少输入了一个怎么办呢?

substitute是一个严肃的方法,如果有key没有输入,那就一定会报错。虽然会很难看,但是可以发现问题。

safe_substitute则不会报错,而是将$xxx直接输入到结果字符串中,如

there apple and $b

这样的好处是程序总是对的,不用被一个个错误搞得焦头烂额。

Template可以被继承,它的子类可以进行一些‘个性化'操作...

通过修改delimiter字段可以将$字符改变为其他字符,如“#”,不过新的标示符需要符合正则表达式的规范。

通过修改idpattern可以修改key的命名规则,比如说规定第一个字符开头必须是a,这对规范命名倒是很有好处。当然,这也是通过正则表示实现的。

from string import Template
class MyTemplate(Template):
  delimiter = "#"
  idpattern = "[a][_a-z0-9]*"
def test():
  s='#aa is not #ab'
  t=MyTemplate(s)
  d={'aa':'apple','ab':'banbana'}
  print t.substitute(d)
if __name__=='__main__':
  test()
Python 相关文章推荐
python实现一次创建多级目录的方法
May 15 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
对python_discover方法遍历所有执行的用例详解
Feb 13 Python
postman模拟访问具有Session的post请求方法
Jul 15 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
python能做哪方面的工作
Jun 15 Python
Python中qutip用法示例详解
Oct 02 Python
python爬虫--selenium模块
Mar 31 Python
Python基础之函数用法实例详解
Sep 10 #Python
Python迭代用法实例教程
Sep 08 #Python
Python切片用法实例教程
Sep 08 #Python
Python常用模块用法分析
Sep 08 #Python
python实现斐波那契递归函数的方法
Sep 08 #Python
Python内置函数的用法实例教程
Sep 08 #Python
Python中函数的用法实例教程
Sep 08 #Python
You might like
PHP实现的增强性mhash函数
2015/05/27 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
Python 元类实例解析
2018/04/04 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
浅谈python锁与死锁问题
2020/08/14 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
广州盈通面试题
2015/12/05 面试题
道路交通安全实施方案
2014/03/12 职场文书
小学生新年寄语
2014/04/03 职场文书
服务理念口号
2014/06/11 职场文书
建筑安全责任书范本
2014/07/24 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
捐书仪式主持词
2015/07/04 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python