有没有办法在Python中多次格式化一个字符串?
Is there a way to format one string multiple times in Python?
我有这样的字符串:
my_string = '{general_setting} ... {specific_setting}'
general_setting 在整个程序中是相同的(即数据库密码),而 specific_setting 可以在整个程序中变化。有没有办法两次格式化一个字符串,首先插入 general_setting 然后有一个预先准备好的字符串稍后插入 specific_setting?
我敢肯定之前肯定有人问过这个问题,但我能找到的只是关于如何多次插入相同的 VALUE 的问题,而不是关于如何在不同时间插入不同值的问题。
根据大括号的数量,您可以使用任何级别的格式
>>> template = '{general_setting} ... {{specific_setting}}'.format(general_setting='general')
>>> my_string = template.format(specific_setting='specific')
>>> print (my_string)
general ... specific
或者,您可以使用 python format string unused named arguments 中提出的解决方案:
class SafeDict(dict):
def __missing__(self, key):
return '{' + key + '}'
然后:
>>> '{bond}, {james} {bond}'.format_map(SafeDict(bond='bond'))
returns:
'bond, {james} bond'
对@Sunitha回答的一些补充,第一次格式化是{}
,第二次是{{}}
,第三次不是{{{}}}
,而是{{{{}}}}
.
四个花括号,因为每次格式化,每处花括号都会减少
我有这样的字符串:
my_string = '{general_setting} ... {specific_setting}'
general_setting 在整个程序中是相同的(即数据库密码),而 specific_setting 可以在整个程序中变化。有没有办法两次格式化一个字符串,首先插入 general_setting 然后有一个预先准备好的字符串稍后插入 specific_setting?
我敢肯定之前肯定有人问过这个问题,但我能找到的只是关于如何多次插入相同的 VALUE 的问题,而不是关于如何在不同时间插入不同值的问题。
根据大括号的数量,您可以使用任何级别的格式
>>> template = '{general_setting} ... {{specific_setting}}'.format(general_setting='general')
>>> my_string = template.format(specific_setting='specific')
>>> print (my_string)
general ... specific
或者,您可以使用 python format string unused named arguments 中提出的解决方案:
class SafeDict(dict):
def __missing__(self, key):
return '{' + key + '}'
然后:
>>> '{bond}, {james} {bond}'.format_map(SafeDict(bond='bond'))
returns:
'bond, {james} bond'
对@Sunitha回答的一些补充,第一次格式化是{}
,第二次是{{}}
,第三次不是{{{}}}
,而是{{{{}}}}
.
四个花括号,因为每次格式化,每处花括号都会减少