python的Template
Template模块,可以用来制作web页面的模板,非常的方便。
Template属于string中的一个类,所以要使用的话要在头部引入:
from string import Template
模板替换变量采用的是$符号,而不是%,它的使用要遵循以下规则:
$$是需要规避,已经采用一个单独的$代替($$相当于输出$,而不是变量)$identifier变量由一个占位符替换(key),key去匹配变量"identifier"${identifier}相当于$identifier. 它被用于当占位符后直接跟随一个不属于占位符的字符,列如"${noun}ification"
Template中有两个重要的方法:substitute和safe_substitute,如下标红的方法名
class string.Template(template)
The constructor takes a single argument which is the template string. substitute(mapping, **kwds)
Performs the template substitution, returning a new string. mapping is any dictionary-like object with keys that match the placeholders in the template. Alternatively, you can provide keyword arguments, where the keywords are the placeholders. When both mapping and kwds are given and there are duplicates, the placeholders from kwds take precedence. safe_substitute(mapping, **kwds)
Like substitute(), except that if placeholders are missing from mapping and kwds, instead of raising a KeyError exception, the original placeholder will appear in the resulting string intact. Also, unlike with substitute(), any other appearances of the $ will simply return $ instead of raising ValueError. While other exceptions may still occur, this method is called “safe” because substitutions always tries to return a usable string instead of raising an exception. In another sense, safe_substitute() may be anything other than safe, since it will silently ignore malformed templates containing dangling delimiters, unmatched braces, or placeholders that are not valid Python identifiers.
测试代码--规则:
 s1 = Template('$who likes $what')
 print(s1.substitute(who='tim', what='kung pao'))
 s2 = Template('${who}likes $what')
 print(s2.substitute(who='tim', what='kung pao'))
 s3 = Template('$$who likes $what')
 print(s3.substitute(who='tim', what='kung pao'))
输出:
tim likes kung pao
timlikes kung pao
$who likes kung pao
测试代码--safe_substitute和substitute区别:
d = dict(who='java')
print(Template('$who need $100').safe_substitute(d))
print(Template('$who need $100').substitute(d))
输出:
java need $100
Traceback (most recent call last):
使用safe_substitute可以正常输出,而使用substitute会出错,需要把$100改成$$100
substitute比较严格,必须每一个占位符都找到对应的变量,不然就会报错,而safe_substitute则会把未找到的$XXX直接输出
参考资料:https://docs.python.org/3.4/library/string.html#template-strings
https://my.oschina.net/u/241670/blog/309856
python的Template的更多相关文章
- Python中Template使用的一个小技巧
		
Python中Template是string中的一个类,可以将字符串的格式固定下来,重复利用. from string import Template s = Template("there ...
 - python的Template使用指南
		
本文主要讲解了python中Template使用方法以及使用技巧,非常实用,有需要的朋友可以参考下: Template无疑是一个好东西,可以将字符串的格式固定下来,重复利用.同时Template也可以 ...
 - Python Jinja2 Template: YAML File Cisco Example Tutorial
		
原文链接:http://networkbit.ch/python-jinja-template/ template.txt如下: hostname {{ name }} interface Loopb ...
 - python Template中substitute()的使用
		
在python中Template可以将字符串的格式固定下来,重复利用. Template属于string中的一个类,要使用他的话可以用以下方式调用: from string import Templa ...
 - 使用Template格式化Python字符串
		
对Python字符串,除了比较老旧的%,以及用来替换掉%的format,及在python 3.6中加入的f这三种格式化方法以外,还有可以使用Template对象来进行格式化. from string ...
 - python中常用的函数与库一
		
1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...
 - python简单爬虫定时推送同花顺直播及荐股至邮箱
		
1.初衷:实践 2.技术:python requests Template 3.思路:根据直播页面获取评价最高的前十博主,定时爬行最新的消息和实战股票 4.思路:python 编辑简单邮件html模板 ...
 - Python day 02
		
基础&运算符 今日概要 循环 字符串格式化 运算符 编码 内容回顾 & 补充 内容回顾 计算机基础 解释器python 2 和 python 3 语法 print input if / ...
 - Testing shell commands from Python
		
如何测试shell命令?最近,我遇到了一些情况,我想运行shell命令进行测试,Python称为万能胶水语言,一些自动化测试都可以完成,目前手头的工作都是用python完成的.但是无法从Python中 ...
 
随机推荐
- 【CVE-2016-10009】OpenSSH < 7.4 - agent Protocol Arbitrary Library Loading
			
粗看了一下,发现这个漏洞还是比较鸡肋的.如果前提条件满足,该漏洞可以在ssh server执行任意指令.不过前提是:1.攻击者可以往受害者磁盘上写文件.
 - 仿浏览器TAB效果
			
仿浏览器的Tag标签 这里先上个非常非常简陋的demo,没加CSS,我先把jquery的源码给全部搞通,在专心把这个功能给讲一下 <!doctype html> <html lang ...
 - mac显示隐藏文件
			
苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令. 显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写): 第一种 显示Mac隐藏文件的命 ...
 - 关于.dll' could not be found 的问题以及解决方案
			
最近做项目遇到这个问题,搞了半天,也没有解决. 后台看看了生成的详细信息,提示引用的版本不统一,最后移除,再添加一个相同版本的Mysql.Data.Mysql.Data.Entity.EF6 就解决了 ...
 - display:none显示和隐藏
			
<html> <head> <title>显示和隐藏问题</title> <meta charset="utf-8"/> ...
 - 基础知识(05) -- Java中的类
			
Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...
 - 3.1、Spring和Struts2的结合使用
			
一.配置Struts2: 1.新建一个web项目,在src目录下新建com.st.bean/dao/service/action包,并在该包下面添加相应的接口及接口的实现类: a).在bean下新建一 ...
 - Live YUV420 和 OpenCV Mat 的互相转换
			
1. YUV420 -> Mat 可用于转换接受到的YUV视频源到OpenCV可以识别的数据 Mat myuv( Frame_Height + Frame_Height / 2, Frame_W ...
 - Linux htop工具使用详解
			
一.Htop的使用简介 大家可能对top监控软件比较熟悉,今天我为大家介绍另外一个监控软件Htop,姑且称之为top的增强版,相比top其有着很多自身的优势.如下: 两者相比起来,top比较繁琐 默认 ...
 - Elasticsearch Configuration 中文版
			
##################### Elasticsearch Configuration Example ##################### # This file contains ...