【问题标题】:How to omit positional argument with string format?如何省略字符串格式的位置参数?
【发布时间】:2018-01-27 11:34:35
【问题描述】:

如何用字符串格式省略最后一个位置参数?

考虑下面。有时我对传递最后一个位置参数不感兴趣。由于最后一个参数值不存在。这是一个可选参数。

message = """ {name} {age}"""
message.format(name='sameer')   # This will give me error

【问题讨论】:

    标签: python string python-2.7


    【解决方案1】:

    你无法避免,但空字符串可以:

    message = """ {name} {age}"""
    message.format(name='sameer', age='') 
    

    如果你想花哨,你可以编写一个函数,用空字符串替换所有没有给出的关键字参数:

    from string import Formatter
    
    def my_format(msg, **kwargs):
        defaults = {x[1]: '' for x in Formatter().parse(msg)}
        defaults.update(kwargs)
        return msg.format(**defaults)
    
    message = """Person: {name} {age}"""
    print(my_format(message, name='sameer', age=30)) 
    print(my_format(message, name='sameer')) 
    print(my_format(message)) 
    

    输出:

    Person: sameer 30
    Person: sameer 
    Person: 
    

    【讨论】:

      【解决方案2】:

      如果您想保持空白,那么 Mike Müller 的答案是正确的。

      如果要在字符串中保留槽位,只需将单大括号替换为双大括号即可:

      >>> message = """ {name} {{age}}"""
      >>> message.format(name='sameer')
      ' sameer {age}'
      

      您可以稍后填补该空缺。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2014-01-08
        • 1970-01-01
        相关资源
        最近更新 更多