有没有办法在Python中多次格式化一个字符串?

Squ*_*uit 1 python string string-formatting python-3.x

我有一个像这样的字符串:

my_string = '{general_setting} ... {specific_setting}'
Run Code Online (Sandbox Code Playgroud)

general_setting对于整个程序(即数据库密码)是相同的,而specific_setting可以在整个程序中变化.有没有办法将一个字符串格式化两次,首先插入general_setting然后预先准备好的字符串以便稍后插入specific_setting?

我确信之前一定会被问过,但我能找到的只是关于如何多次插入相同VALUE的问题,而不是关于如何在不同时间插入不同值的问题.

Sun*_*tha 11

您可以根据大括号的数量进行任何级别的格式化

>>> template = '{general_setting} ... {{specific_setting}}'.format(general_setting='general')
>>> my_string = template.format(specific_setting='specific')
>>> print (my_string)
general ... specific
Run Code Online (Sandbox Code Playgroud)


rel*_*let 7

或者,您可以使用python格式字符串中未提出的命名参数提出的解决方案:

class SafeDict(dict):
    def __missing__(self, key):
        return '{' + key + '}'
Run Code Online (Sandbox Code Playgroud)

然后:

>>> '{bond}, {james} {bond}'.format_map(SafeDict(bond='bond'))
Run Code Online (Sandbox Code Playgroud)

收益:

'bond, {james} bond'
Run Code Online (Sandbox Code Playgroud)