脚本专栏 发布日期:2025/11/10 浏览次数:1
string.Template()
string.Template()内添加替换的字符, 使用"$"符号, 或 在字符串内, 使用"${}"; 调用时使用string.substitute(dict)函数.
可以通过继承"string.Template", 覆盖变量delimiter(定界符)和idpattern(替换格式), 定制不同形式的模板.
代码:
# -*- coding: utf-8 -*-
import string
template_text = '''''
Delimiter : %%
Replaced : %with_underscore
Ingored : %notunderscored
'''
d = {'with_underscore' : 'replaced',
'notunderscored' : 'not replaced'}
class MyTemplate(string.Template):
delimiter = '%'
idpattern = '[a-z]+_[a-z]+'
t = MyTemplate(template_text)
print('Modified ID pattern: ')
print(t.safe_substitute(d))
输出:
Modified ID pattern: Delimiter : % Replaced : replaced Ingored : %notunderscored
注意: 定界符(delimiter)为"%", 替换模式(idpattern)必须包含下划线, 所以第2个没有进行替换.
正则替换
string.Template的pattern是一个正则表达式, 可以通过覆盖pattern属性, 定义新的正则表达式.
如: 使用新的定界符"{{", 把{{var}}作为变量语法.
代码:
import string
t = string.Template('$var')
print(t.pattern.pattern)
class MyTemplate(string.Template):
delimiter = '{{'
pattern = r'''''
\{\{("htmlcode">
\$("htmlcode">
import string
values = {'var' : 'foo'}
t = string.Template('''''$var is here but $ missing is not provided! ''')
try:
print 'substitute() : ', t.substitute(values)
except ValueError as err:
print 'Error:', str(err)
print 'safe_substitude() : ', t.safe_substitute(values)
输出:
substitute() : Error: Invalid placeholder in string: line 1, col 18
safe_substitude() : foo is here but $ missing is not provided!