有没有一种方法可以在Python中多次格式化一个字符串?

时间:2018-08-07 12:51:07

标签: python string python-3.x string-formatting

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

my_string = '{general_setting} ... {specific_setting}'

整个程序的general_setting相同(即数据库密码),而整个程序的specific_setting可能有所不同。有没有一种方法可以将一个字符串格式化两次,首先插入general_setting,然后准备一个预先准备好的字符串,以便稍后插入specific_setting?

我确定必须先问过这个问题,但是我能找到的只是关于如何多次插入相同VALUE的问题,而不是关于如何在不同时间插入不同的值的问题。

3 个答案:

答案 0 :(得分:10)

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

>>> template = '{general_setting} ... {{specific_setting}}'.format(general_setting='general')
>>> my_string = template.format(specific_setting='specific')
>>> print (my_string)
general ... specific

答案 1 :(得分:6)

或者,您可以使用python format string unused named arguments中提出的解决方案:

class SafeDict(dict):
    def __missing__(self, key):
        return '{' + key + '}'

然后:

>>> '{bond}, {james} {bond}'.format_map(SafeDict(bond='bond'))

返回:

'bond, {james} bond'

答案 2 :(得分:0)

@ Sunitha答案中的一些附加内容,第一次是{},第二次是{{}},第三次不是{{{}}},而是{{1 }}。

四个花括号,因为每次格式化时,每个位置的花括号都会减少。