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 yield 小结和实例
Apr 25 Python
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
Python内置函数之filter map reduce介绍
Nov 30 Python
Python制作数据导入导出工具
Jul 31 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
Python微信库:itchat的用法详解
Aug 14 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
python3将变量输入的简单实例
Aug 19 Python
如何理解python接口自动化之logging日志模块
Jun 15 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 字符串函数收集
2010/03/29 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python实现图像拼接功能
2020/03/23 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
什么是组件架构
2016/05/15 面试题
祖国在我心中演讲稿
2014/01/15 职场文书
运动会入场词200字
2014/02/15 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
小学端午节活动总结
2015/02/11 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
学生会招新宣传语
2015/07/13 职场文书
情况说明书怎么写
2015/10/08 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python