如何用字符串格式省略位置参数?

时间:2018-01-27 11:34:36

标签: python string python-2.7

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

请考虑以下问题。有时我对传递最后一个位置参数不感兴趣。由于最后一个参数值不存在。这是一个可选的论点。

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

2 个答案:

答案 0 :(得分:3)

你无法避免它,但是一个空字符串可以做到:

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: 

答案 1 :(得分:0)

如果你想把它弄空,那么MikeMüller的回答是正确的。

如果你想把插槽留在字符串中,只需用双层替换单个括号:

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

然后您可以稍后填写该广告位。