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实现查询IP地址所在地
Mar 29 Python
使用Python对Access读写操作
Mar 30 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
python模糊图片过滤的方法
Dec 14 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
Python数据持久化存储实现方法分析
Dec 21 Python
python使用openpyxl操作excel的方法步骤
May 28 Python
浅谈怎么给Python添加类型标注
Jun 08 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 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 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
密码框显示提示文字jquery示例
2013/08/29 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
React Router基础使用
2017/01/17 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
Python内置的字符串处理函数整理
2013/01/29 Python
python中的多线程实例教程
2014/08/27 Python
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
跟老齐学Python之for循环语句
2014/10/02 Python
Python正则表达式完全指南
2017/05/25 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
pyshp创建shp点文件的方法
2018/12/31 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
Python同时迭代多个序列的方法
2020/07/28 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
经典c++面试题四
2015/05/14 面试题
学生学习总结的自我评价
2013/10/22 职场文书
销售顾问岗位职责
2014/02/25 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android