python的Template使用指南

本文主要讲解了python中Template使用方法以及使用技巧,非常实用,有需要的朋友可以参考下:

Template无疑是一个好东西,可以将字符串的格式固定下来,重复利用。同时Template也可以让开发人员可以分别考虑字符串的格式和其内容了,无形中减轻了开发人员的压力。

Template属于string中的一个类,所以要使用的话可以用以下方式调用

1 from string import Template

Template有个特殊标示符$,它具有以下的规则:

它的主要实现方式为$xxx,其中xxx是满足python命名规则的字符串,即不能以数字开头,不能为关键字等

如果$xxx需要和其他字符串接触时,可用{}将xxx包裹起来(以前似乎使用‘()‘,我的一本参考书上是这样写的,但是现在的版本应该只能使用‘{}‘)。例如,aaa${xxx}aaa

Template中有两个重要的方法:substitute和safe_substitute.

这两个方法都可以通过获取参数返回字符串

1 >>s=Template(There $a and $b)
2 >>print s.subtitute(a=‘apple‘,b=‘banana‘)
3 There apple and banana
4 >>print s.safe_substitute(a=‘apple‘,b=‘banbana‘)
5 There apple and banbana

还可以通过获取字典直接传递数据,像这样

1 >>s=Template(There $a and $b)
2 >>d={‘a‘:‘apple‘,‘b‘:‘banbana‘}
3 >>print s.substitute(d)
4 There apple and banbana

它们之间的差别在于对于参数缺少时的处理方式。

Template的实现方式是首先通过Template初始化一个字符串。这些字符串中包含了一个个key。通过调用substitute或safe_subsititute,将key值与方法中传递过来的参数对应上,从而实现在指定的位置导入字符串。这个方式的一个好处是不用像print ‘%s‘之类的方式,各个参数的顺序必须固定,只要key是正确的,值就能正确插入。通过这种方式,在插入很多数据的时候就可以松口气了。可是即使有这样偷懒的方法,依旧不能保证不出错,如果key少输入了一个怎么办呢?

substitute是一个严肃的方法,如果有key没有输入,那就一定会报错。虽然会很难看,但是可以发现问题。

safe_substitute则不会报错,而是将$xxx直接输入到结果字符串中,如

1 there apple and $b

这样的好处是程序总是对的,不用被一个个错误搞得焦头烂额。

Template可以被继承,它的子类可以进行一些‘个性化‘操作...

通过修改delimiter字段可以将$字符改变为其他字符,如“#”,不过新的标示符需要符合正则表达式的规范。

通过修改idpattern可以修改key的命名规则,比如说规定第一个字符开头必须是a,这对规范命名倒是很有好处。当然,这也是通过正则表示实现的。

 1 from string import Template
 2 class MyTemplate(Template):
 3   delimiter = "#"
 4   idpattern = "[a][_a-z0-9]*"
 5 def test():
 6   s=‘#aa is not #ab‘
 7   t=MyTemplate(s)
 8   d={‘aa‘:‘apple‘,‘ab‘:‘banbana‘}
 9   print t.substitute(d)
10 if __name__==‘__main__‘:
11   test()
时间: 2024-11-06 18:47:30

python的Template使用指南的相关文章

Python 3程序开发指南(第2版 修订版)笔记

Python 3程序开发指南(第2版 修订版) 目录 1 过程型程序设计快速入门 2 数据类型 3 组合类型 4 控制结构与函数 5 模块 6 OOP 7 文件处理 8 高级程序设计技术 8.1 FP 9 调试.测试与Profiling 10 进程与线程 11 网络 12 数据库 13 正则表达式 14 分析简介 14.1 PyParsing 14.2 PLY 15 GUI 过程型程序设计快速入门 for in try except as 数据类型 sys.float_info.epsilon

SecureCRT中python脚本编写学习指南

SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 内容 (1)使用python语言实现SecureCRT中的D

python 数据类型--《Python 3程序开发指南》笔记

参考:<Python 3程序开发指南> 整数转换函数: bin(i) 返回整数i的二进制表示(字符串) hex(i) 返回i的十六进制表示(字符串) int(x) 将x转换为整数,失败产生ValueError异常,x的数据类型不知道到整数的转换产生TypeError异常,x为浮点数则截取整数部分 int(x,base) 将用base进制表示的x转换成十进制,例如int('74',8)返回60,int('A4',16)返回164 oct(i) 返回i的八进制表示,例如oct(10)=='012'

分享《Python地理空间分析指南(第2版)》中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1PkoFDSnp0qadqFzXdSW7VA更多资料:http://blog.51cto.com/14050756 分享<Python地理空间分析指南(第2版)>中文PDF+英文PDF+源代码中文PDF,289页,带书签目录,文字可以复制粘贴.英文PDF,394页,带书签目录,文字可以复制粘贴.中英文两版对比学习. 配套源代码. 其中中文版如图: 原文地址:http://blog.51cto.com/14050756/2327341

『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)

简介: scipy包包含致力于科学计算中常见问题的各个工具箱.它的不同子模块相应于不同的应用.像插值,积分,优化,图像处理,,特殊函数等等. scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱.scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作. 在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了.作为非专业程序员,科学家总是喜欢重新发明造轮子

python的Template

Template无疑是一个好东西,可以将字符串的格式固定下来,重复利用.同时Template也可以让开发人员可以分别考虑字符串的格式和其内容了,无形中减轻了开发人员的压力. Template属于string中的一个类,所以要使用的话可以用以下方式调用 from string import Template Template有个特殊标示符$,它具有以下的规则: 它的主要实现方式为$xxx,其中xxx是满足python命名规则的字符串,即不能以数字开头,不能为关键字等 如果$xxx需要和其他字符串接

Python基础之 正则表达式指南

本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程. 注意:本文基于Python2.4完成:如果看到不明白的词汇请记得百度谷歌或维基,whatever. 尊重作者的劳动,转载请注明作者及原文地址 >.<html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法

Python编码爬坑指南

自己最近有在学习python,这实在是一门非常短小精悍的语言,很喜欢这种语言精悍背后又有强大函数库支撑的语言.可是刚接触不久就遇到了让人头疼的关于编码的问题,在网上查了很多资料现在在这里做一番总结,权当一个记录也为后来的兄弟姐妹们服务,如果可以让您少走一些弯路本人将倍感荣幸. 先来描述下现象吧: import os for i in os.listdir("E:\Torchlight II"): print i 代码很简单我们使用os的listdir函数遍历了E:\Torchlight

『Python』Numpy学习指南第九章_使用Matplotlib绘图

坐标轴调节以及刻度调节参见:『Python』PIL&plt图像处理_矩阵转化&保存图清晰度调整 数据生成: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 func = np.poly1d(np.array([1,2,3,4])) 5 func1 = func.deriv(m=1) # 求一阶导数 6 func2 = func.deriv(m=2) # 求二阶导数 7 8 x = np.linspace(-10,10,3