【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 2014-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多