[笔记]python template 模板
来源:互联网 发布:淘宝店铺货源 编辑:程序博客网 时间:2024/05/16 13:53
1.什么是template
template是python中的string库的一部分
使用template可以不编辑应用就可以改变其中的数据
模板还可以被他的子类修改
2. template如何工作的
template是含有占位符的字符串
用字典将值映射到模板中
占位符后面跟着的变量名要符合python语法中的变量名规则
Template(“$name is friends with $friend”)
3.举例
from string import Templatedef main(): cart = [] cart.append(dict(item='coke',price=11,qty= 1)) cart.append(dict(item='cake',price=12,qty=6)) cart.append(dict(item='fish',price = 1,qty =4)) t = Template("$qty * $item = $price") total = 0 print "Cart" for data in cart: print t.substitute(data) total += data["price"] print "Total: %s"%(total,)if __name__ == "__main__": main()
4.template 异常error
占位符所引导的变量没与字典匹配的话,解释器会抛出KeyError。因为我们的字典里没有这个键。
一些占位符引导的变量是不好的。比如,这个变量以数字开头。这会使解释器抛出ValueError异常。
5. safe_substitute()
如果我们使用这个函数,template可以处理这些异常并返回给我们字符串。
如果哪个占位符变量有异常,返回的这个字符串中这个占位符就没有变化,不会被替代。
比如,Template(“$name had $money”).如果money这里有错误,那么使用safe_substitute()后输出的就是“James had $money”
6.可以使用自己喜欢的符号引导占位变量
我们要做的就是重载类属性delimiter,并修改相应的模板字符串和变量。这里我们用C语言的取地址符号替代默认的美元$符号。
from string import Templateclass MyTemplate(Template): delimiter = '&'def main(): cart = [] cart.append(dict(item='coke',price=11,qty= 1)) cart.append(dict(item='cake',price=12,qty=6)) cart.append(dict(item='fish',price = 1,qty =4)) t = MyTemplate("&qty * &item = &price") total = 0 print "Cart" for data in cart: print t.substitute(data) total += data["price"] print "Total: %s"%(total,)if __name__ == "__main__": main()
运行结果还是一样的。
Cart
1 * coke = 11
6 * cake = 12
4 * fish = 1
Total: 24
7.小提示
如果你行输出delimiter的话,就要连续输入两个delimiter。可以认为,delimiter就是转义符。比如,在delimiter是’$’的情况下:
>>> t = Template(“$you owe me $$0.”)
>>> t.substitute(dict(you=’James’))
“James owe me $0.”
如果你还想改变占位符后面的变量名的命名规则,这也可以。继承Template类之后,改变类属性idpattern,其默认值为r”[_a-z][_a-z0-9]*”。
如果你还有需求,想要改变一个单词的某一部分。这也行。只需将占位符后面的变量名加上{}。比如:
>>> t = Template(“The ${back}yard is far away.”)
>>> t.substitute(dict(back=’ship’))
“The shipyard is far away.”
0 0
- [笔记]python template 模板
- 模板template课后笔记
- python字符串模板(Template)例子
- python template mako 学习笔记
- Python Mako Template 学习笔记
- python 字符串模板用法string.Template
- 设计模式-模板方法模式-template-python
- C++Template学习笔记之函数模板
- C++ template学习笔记之模板特化
- c++ template笔记(1)模板函数
- <C++学习笔记>函数模板 template
- c++ template笔记(2)模板类
- c++ template笔记(1)模板函数
- javascript模板引擎:art-template文档笔记
- 模板Template
- 模板Template
- 模板(template)
- template 模板
- 10+年程序员总结的20+条经验教训
- 设计模式---观察者模式(Observer Pattern with java)
- 数据结构之线性表学习总结
- 解决跨站脚本注入,跨站伪造用户请求,sql注入等http安全漏洞
- LeetCodeOJ_200_Number of Islands
- [笔记]python template 模板
- 【Unity】相机跟随主角移动,并带有延迟效果
- A - Hex Factorial
- CentOS配置防火墙
- Mac os YOsemite 10.10安装Metasploit
- Eclipse failed to create jvm
- vmbox-android
- Qt学习记录4——mainwindow的布局使用
- hdu 1671 字典树