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使用PyGame播放Midi和Mp3文件的方法
Apr 24 Python
Python中set与frozenset方法和区别详解
May 23 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
Python新手学习装饰器
Jun 04 Python
Python scrapy爬取小说代码案例详解
Jul 09 Python
Python模块常用四种安装方式
Oct 20 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 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
第八节--访问方式
2006/11/16 PHP
DISCUZ 分页代码
2007/01/02 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
PHP实现递归的三种方法
2020/07/04 PHP
jquery 插件学习(一)
2012/08/06 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
javascript的this关键字详解
2019/05/20 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
JS实现图片切换特效
2019/12/23 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
2014年端午节活动方案
2014/03/11 职场文书
初婚初育证明范本
2014/11/24 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python