在字符串中进行字符串替换,一般是使用%s来格式化解决,但这种格式化使用起来比较复杂,并且即使是熟悉的开发人员使用起来也容易出错。为了解决这些问题,在字符串库里提供一个模板类。具体情况可以参考PEP 292文档。模板类字符串主要使用$开头的替换字符串来代替%开头的字符串。
替换字符串的规则如下:
l $$,用两个$来表示一个$字符输出。
l $identifier,用$加标识符方式来识别替换串位置和键值。其中identifier就是函数里键值对的键。
l ${identifier},当替换的字符串后面紧跟着字符串时,就需要使用大括号来分隔开,以便可以识别出来键值对的键出来。比如${identifier}abc,由于abc之前紧跟着替换的字符串。
当在替换的过程中,遇到$开头的字符串不能替换时,就会抛出ValueError异常。
class string.Template(template)
构造函数用来构造一个可替换的模板字符串。
substitute(mapping, **kwds)
本函数用来实现对模板字符串中占位字符串进行替换,返回一个新的字符串。参数 mapping 是可以输入字典类的对象;参数kwds是可以输入键值对的对象。在字符串中 替换的字符串的名称与字典中键名称一样,或者与键值对的键名称一样。
safe_substitute(mapping, **kwds)
本函数参数和功能与上面substitute函数是一样的,唯一的区别是当找查找替换字符串 时,当未发现有相应的替换字符串,在substitute函数中会抛出异常ValueError、KeyError, 不能继续替换;而在safe_substitute函数会不会抛出异常,但可以继续输出,替换的字 符串不作任何改变。
例子:
#Template
from string import Template
s = Template(‘$$ $who like apple‘)
print(s.substitute(who=‘Tom‘))
s = Template(‘$$ ${who}abc:$who like apple‘)
print(s.substitute(who=‘Tom‘))
print(s.safe_substitute())
结果输出如下:
$ Tom like apple
$ Tomabc:Tom like apple
$ ${who}abc:$who like apple
3.1.5 字符串辅助函数
string.capwords(s, sep=None)
本函数使用str.split()函数来分拆参数s字符串,然后使用str.capitalize()函数进行格式化,把子串变成首字母大写其余字母小写的格式,最后使用str.join()把格式化后的子串进行连接到一起;连接时,如果参数sep等于None或者没有给出,默认使用一个空格作为分隔子串识别符和输出符;反之给出时,就以给出的字母作为分隔符识别和输出。
例子:
import string
s = ‘abc face CHINA shenzhen‘
print(string.capwords(s))
s = ‘The quick brown fox jumped over the lazy dog.‘
print(string.capwords(s))
print(string.capwords(‘abc #abc#test #dog‘, sep = ‘#‘))
输出结果如下:
Abc Face China Shenzhen
The Quick Brown Fox Jumped Over The Lazy Dog.
Abc #Abc#Test #Dog
蔡军生 QQ:9073204 深圳
版权声明:本文为博主原创文章,未经博主允许不得转载。