码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2021-02-22 12:46:59      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:保留   表达   except   template   strong   ide   rpo   key   VID   

在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中只有一个变量的值的话,那另一个变量它会默认为字符串显示
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

标签:保留   表达   except   template   strong   ide   rpo   key   VID   

原文地址:https://www.cnblogs.com/fjy49/p/14425831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!