This question already has answers here:
partial string formatting
(22个答案)
1年前关闭。
假设我有:
这将输出:
接下来,我们有:
这将输出:
是否有一些解决方法来防止发生此错误,例如:
if keyrror:忽略,不理会(但要解析其他人) 将格式字符串与可用的命名参数进行比较,如果缺少,则添加
对于
在Python 2.6/2.7中
对于
对于
(22个答案)
1年前关闭。
假设我有:
action = '{bond}, {james} {bond}'.format(bond='bond', james='james')
这将输出:
'bond, james bond'
接下来,我们有:
action = '{bond}, {james} {bond}'.format(bond='bond')
这将输出:
KeyError: 'james'
是否有一些解决方法来防止发生此错误,例如:
最佳答案
如果您使用的是Python 3.2+,可以使用str.format_map()。
对于bond, bond
:
>>> from collections import defaultdict
>>> '{bond}, {james} {bond}'.format_map(defaultdict(str, bond='bond'))
'bond, bond'
对于
bond, {james} bond
:>>> class SafeDict(dict):
... def __missing__(self, key):
... return '{' + key + '}'
...
>>> '{bond}, {james} {bond}'.format_map(SafeDict(bond='bond'))
'bond, {james} bond'
在Python 2.6/2.7中
对于
bond, bond
:>>> from collections import defaultdict
>>> import string
>>> string.Formatter().vformat('{bond}, {james} {bond}', (), defaultdict(str, bond='bond'))
'bond, bond'
对于
bond, {james} bond
:>>> from collections import defaultdict
>>> import string
>>>
>>> class SafeDict(dict):
... def __missing__(self, key):
... return '{' + key + '}'
...
>>> string.Formatter().vformat('{bond}, {james} {bond}', (), SafeDict(bond='bond'))
'bond, {james} bond'
关于python - 格式化字符串未使用的命名参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17215400/
10-09 20:21