【问题标题】:Is there a way to format one string multiple times in Python?有没有办法在 Python 中多次格式化一个字符串?
【发布时间】:2019-01-14 13:45:05
【问题描述】:
我有一个这样的字符串:
my_string = '{general_setting} ... {specific_setting}'
general_setting 对整个程序(即数据库密码)是相同的,而 specific_setting 可以在整个程序中变化。有没有办法将一个字符串格式化两次,首先插入general_setting,然后有一个预先准备好的字符串稍后插入specific_setting?
我确信这之前一定有人问过这个问题,但我能找到的只是关于如何多次插入相同 VALUE 的问题,而不是关于如何在不同时间插入不同值的问题。
【问题讨论】:
标签:
python
string
python-3.x
string-formatting
【解决方案1】:
对@Sunitha回答的一些补充,第一次格式化是{},第二次是{{}},第三次不是{{{}}},而是{{{{}}}}。
四个大括号,因为每次格式化,每个地方的大括号都会减少。
【解决方案2】:
或者,您可以使用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'
【解决方案3】:
您可以根据大括号的数量进行任何级别的格式化
>>> template = '{general_setting} ... {{specific_setting}}'.format(general_setting='general')
>>> my_string = template.format(specific_setting='specific')
>>> print (my_string)
general ... specific