【发布时间】:2018-01-27 11:34:35
【问题描述】:
如何用字符串格式省略最后一个位置参数?
考虑下面。有时我对传递最后一个位置参数不感兴趣。由于最后一个参数值不存在。这是一个可选参数。
message = """ {name} {age}"""
message.format(name='sameer') # This will give me error
【问题讨论】:
标签: python string python-2.7
如何用字符串格式省略最后一个位置参数?
考虑下面。有时我对传递最后一个位置参数不感兴趣。由于最后一个参数值不存在。这是一个可选参数。
message = """ {name} {age}"""
message.format(name='sameer') # This will give me error
【问题讨论】:
标签: python string python-2.7
你无法避免,但空字符串可以:
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:
【讨论】:
如果您想保持空白,那么 Mike Müller 的答案是正确的。
如果要在字符串中保留槽位,只需将单大括号替换为双大括号即可:
>>> message = """ {name} {{age}}"""
>>> message.format(name='sameer')
' sameer {age}'
您可以稍后填补该空缺。
【讨论】: