【string】字符串模板、拼接、格式

在python中Template可以将字符串的格式固定下来,重复利用。
1、使用 string.Template 拼接时,要在名字前加前缀$来标识变量(例如, $var)
如果有必要区分变量和周围的文本,可以用大括号包围变量(例如,${va r})
import string

values = {'var': 'foo'}
t = string.Template("""
Variable        : $var 
Escape          : $$ 
Variable in text: ${var}iable
""")
print('TEMPLATE: ', t.substitute(values))

输出结果:

TEMPLATE:  
Variable        : foo 
Escape          : $ 
Variable in text: fooiable

2、使用%操作符的类似字符串拼接

s1 = """
Variable        : %(var)s
Escape          : %% 
Variable in text: %(var)siable
"""
print('TERPOLATION', s1 % values)

输出结果:

TERPOLATION 
Variable        : foo
Escape          : % 
Variable in text: fooiable

3、使用 str. format ()格式

s2 = """
Variable        : {var} 
Escape          : {{}} 
Variable in text: {var}iable
"""
print('FORMAT: ', s2.format(**values))

输出结果:

FORMAT:  
Variable        : foo 
Escape          : {} 
Variable in text: fooiable
模板与字符串拼接或格式化的一个关键区别是,它不考虑参数的类型 值会转换为字符串,再将字符串插入结果 这里没有提供格式化选项 例如,没有办法控制使用几位有效数字来表示一个浮点值
不过,这也有一个好处,通过使用 safe substitute() 方法,可以避免未能向模板提供所需的所有参数值时可能产生的异常
 
values = {'var': 'foo'}
t = string.Template("$var is here but $missing is not provided")

try:
    print('substitute() :', t.substitute(values))
except KeyError as e:
    print('ERROR:', str(e))

print('safe_substitute(): ', t.safe_substitute(values))

输出结果:

ERROR: 'missing'
safe_substitute():  foo is here but $missing is not provided
由于 values 字典中没有 missing 的值,所以 substitute() 会产生一个 KeyError 
safe_substitute() 则不同,它不会抛出这个错误,而是会捕获这个错误并保留文本中的变量表达式
换种说法就是使用substitute(values)的话,那t中的两个变量都要在values中存在
用safe_substitute()时,当t中的两个变量有两个,但是values中只有一个变量的值的话,那另一个变量它会默认为字符串显示
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2021-02-21 18:22  旧时光里的小鱼儿  阅读(526)  评论(0编辑  收藏  举报