python template_[笔记]python template
1.什么是template
template是python中的string库的一部分
使用template可以不编辑应用就可以改变其中的数据
模板还可以被他的子类修改
2. template如何工作的
template是含有占位符的字符串
用字典将值映射到模板中
占位符后面跟着的变量名要符合python语法中的变量名规则
Template(“$name is friends with $friend”)
3.举例from string import Template
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 = 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 Template
class 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.”
python template_[笔记]python template相关推荐
- (转载)[python学习笔记]Python语言程序设计(北理工 嵩天)
作者:九命猫幺 博客出处:http://www.cnblogs.com/yongestcat/ 欢迎转载,转载请标明出处. 如果你觉得本文还不错,对你的学习带来了些许帮助,请帮忙点击右下角的推荐 阅读 ...
- 学python安装-Python学习笔记-Python安装
Python安装 文章简介:本文介绍在不同操作系统中搭建Python编程环境. 一 搭建编程环境 在不同的操作系统中,Python存在细微的区别,下面介绍两个主要的Python版本. 1.1 Pyth ...
- Python学习笔记 - Python数据类型
前言 在Python语言中,所有的数据类型都是类,每一个变量都是类的"实例".没有基本数据类型的概念,所以整数.浮点数和字符串也都是类. Python有6种标准数据类型:数字.字符 ...
- Python学习笔记 - Python语言概述和开发环境
一.Python简介 1.1 Python语言简史 Python由荷兰人吉多·范罗苏姆(Guido van Rossum)于1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无聊时间,决心开发一门 ...
- Python学习笔记 - Python语法基础
前言 本篇博文主要介绍Python中的一些最基础的语法,其中包括标识符.关键字.内置函数.变量.常量.表达式.语句.注释.模块和包等内容. 一.标识符.关键字和内置函数 任何一种语言都离不开标识符和关 ...
- Python学习笔记 Python概述 编码规范 输出与输入 变量 标识符
Python学习第一天 Python的概述 1.Python的优缺点 1.1 优点: 1.2 缺点: 2.Python的编码规范 3.注释 3.Python的输出与输入 4.Python中的变量 5. ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...
- python编程语法-Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
最新文章
- python的深拷贝与浅拷贝
- COCO API的克隆 - http://cocodataset.org/
- IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了...
- html 图像 ppt,用HTML设置的文本和图像.ppt
- C++:编译原理实验之词法分析器
- flink java生成流式数据
- 程序猿必须要知道的一个内容:客户端+服务端一(源码解析、建议收藏)
- SQL Server 更新数据表记录
- 关于阿里云快照收费机机制和说明
- 面试记录:面试两个人的不同结果
- JVM调优-Jva中基本垃圾回收算法
- 【DirectX3D - 5】渲染多路视频(单一窗口)
- 2021-2025年中国共享Web托管服务行业市场供需与战略研究报告
- 学习Pandas(Kaggle)
- 使用 yarn 安装时,报错node_modules\node sass:Command failed.
- 【MATLAB-app】如何使用键盘回调以及在app设计中应用
- DTS、杜比2.0、杜比5.1、AC3各是什么意思
- 旋转编码器EC11调试心得
- Java ZipOutputStream 的使用,实现压缩文件
- 基于 RISC-V SoC 的可配置 FFT 系统设计(2)RISC-V 的起源及其发展历程
热门文章
- 想转行到IT,心里不定,不知道怎么做?
- 腾讯云 + Linux
- ESP32 开发笔记(五)XPT2046 触摸
- PS入门(1-6) 颜色的选取
- 免费直播!真.零基础能学会的前端入门教程,还带实操抖音风格字体特效!
- No input file specified 解决方案(thinkPhp5.1)
- 计算机打印要先安装驱动吗,手把手教你电脑怎么安装打印机驱动
- 简略阅读《Guiding Deep Learning System Testing using Surprise Adequacy》
- 类与对象01_旺旺老师Java学习解决方案_第一季
- Java 构造器之构造器的隐式调用和显式调用