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求列表交集的方法汇总
Nov 10 Python
Python中使用gzip模块压缩文件的简单教程
Apr 08 Python
python中引用与复制用法实例分析
Jun 04 Python
Python中函数参数调用方式分析
Aug 09 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
python dict 相同key 合并value的实例
Jan 21 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
Python:slice与indices的用法
Nov 25 Python
python matplotlib库的基本使用
Sep 23 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
python爬取网页版QQ空间,生成各类图表
Jun 02 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/06/11 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
浅谈php冒泡排序
2014/12/30 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
测试你的JS的掌握程度的代码
2009/12/09 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
微信小程序日历效果
2018/12/29 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
详解Python做一个名片管理系统
2019/03/14 Python
详解python读取image
2019/04/03 Python
python解释器spython使用及原理解析
2019/08/24 Python
opencv实现简单人脸识别
2021/02/19 Python
解决python 上传图片限制格式问题
2019/10/30 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
管理部部长岗位职责
2013/12/05 职场文书
大学秋游活动方案
2014/02/11 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书