我有一个字符串模板,在代码执行过程中我只使用一次格式化,只有一个唯一的变量some_var
:
message_tmpl = '{}. Path {} cannot be extracted'
some_var = '123'
condition = True # or False...
if condition:
message = message_tmpl.format('True message', some_var)
else:
message = message_tmpl.format('False Message', some_var)
我如何改善这种流量以避免每次都传递some_var
?
我试图在下面运行代码片段但没有成功:
message_tmpl = '{msg}. Path {some_var} cannot be extracted'.format(some_var=some_var)
答案 0 :(得分:2)
这可以通过模板的特定格式来完成:在模板中传递'{}'
以进行第一次格式化:
message_tmpl = '{}. Path {} cannot be extracted'.format('{}', some_var)
或
message_tmpl = '{msg}. Path {some_var} cannot be extracted'.format(msg='{}', some_var=some_var)
以这种方式创建模板后,some_var
的传递应从下一格式中删除,并且只传递msg
。
答案 1 :(得分:1)
您还可以使用新式格式的旧式格式:
message_tmpl = '{msg}. Path %(some_var)s cannot be extracted' % {'some_var': some_var}
答案 2 :(得分:1)
您需要在thread-1
周围添加一对大括号,如下所示:
{msg}
通常,如果需要逐渐填充模板,则需要使用嵌套大括号。多一点演示:
>>> some_var = '123'
>>> message_tmpl = '{{msg}}. Path {some_var} cannot be extracted'.format(some_var=some_var)
>>> message_tmpl.format(msg='a message')
'a message. Path 123 cannot be extracted'