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+Django在windows下的开发环境配置图解
Nov 11 Python
Python的print用法示例
Feb 11 Python
Python中常见的数据类型小结
Aug 29 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
利用Python破解验证码实例详解
Dec 08 Python
python 接口测试response返回数据对比的方法
Feb 11 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
python add_argument()用法解析
Jan 29 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 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.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
爱国卫生月活动总结范文
2014/04/25 职场文书
《悯农》教学反思
2014/04/28 职场文书
文明市民先进事迹
2014/05/15 职场文书
人力资源部岗位职责
2015/02/11 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python