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入门教程
Apr 03 Python
python实现bucket排序算法实例分析
May 04 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
Python制作动态字符图的实例
Jan 27 Python
matplotlib实现区域颜色填充
Mar 18 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
python调用win32接口进行截图的示例
Nov 11 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 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
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
php全角字符转换为半角函数
2014/02/07 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
基于jquery 的一个progressbar widge
2010/10/29 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
Python中字符串与编码示例代码
2019/05/20 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
家长对孩子的感言
2014/03/10 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
经典团队口号大全
2014/06/21 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
python执行js代码的方法
2021/05/13 Python