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利用hook技术破解https的实例代码
Mar 25 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
python清除字符串里非字母字符的方法
Jul 02 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
Pytorch之contiguous的用法
Dec 31 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Python requests接口测试实现代码
Sep 08 Python
Python jieba库分词模式实例用法
Jan 13 Python
python周期任务调度工具Schedule使用详解
Nov 23 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+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
python调用c++传递数组的实例
2019/02/13 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Pandas的Apply函数具体使用
2020/07/21 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
国际贸易专业个人求职信格式
2014/02/02 职场文书
鲜花方阵解说词
2014/02/13 职场文书
商务英语广告词大全
2014/03/18 职场文书
元宵节主持词
2014/03/25 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
2014年统计工作总结
2014/11/21 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python
python可视化大屏库big_screen示例详解
2021/11/23 Python
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技