字符串格式化方法。词典
String format method. Dictionaries
我正在学习如何使用字符串 format
方法,但我发现了一些我不明白的地方。当我这样做时:
>>> s = "My {comp[b]}"
>>> s.format(comp = {'a': 'laptop', 'b': 'desktop'})
'My desktop'
我得到了预期的结果。但是当我尝试在方法之外定义字典时,只使用里面的名称:
>>> comp = {'a': 'laptop', 'b': 'desktop'}
>>> s = "My {comp[b]}"
>>> s.format(comp)
我得到 KeyError: 'comp'
。为什么?
在您的第二个示例中,您没有命名要传递给 format
的参数。你的最后一行应该是:
>>> s.format(comp=comp)
format
区分位置参数和命名参数的使用。
通过在格式字符串中使用变量的名称,您需要提供具有该特定名称的命名参数。
在第一种情况下,你是因为你正在调用 "".format(<name>=<var>)
而在第二种情况下,你只是给出了一个由 comp
字典填充的位置参数(位置 0)。
如果您已阅读文档,您会注意到格式可以这样使用位置参数:"Hello {0}!".format(<arg0>)
.
在第二种情况下,您没有给出所需的名称参数 comp
,而是给出了位置参数 0.
我正在学习如何使用字符串 format
方法,但我发现了一些我不明白的地方。当我这样做时:
>>> s = "My {comp[b]}"
>>> s.format(comp = {'a': 'laptop', 'b': 'desktop'})
'My desktop'
我得到了预期的结果。但是当我尝试在方法之外定义字典时,只使用里面的名称:
>>> comp = {'a': 'laptop', 'b': 'desktop'}
>>> s = "My {comp[b]}"
>>> s.format(comp)
我得到 KeyError: 'comp'
。为什么?
在您的第二个示例中,您没有命名要传递给 format
的参数。你的最后一行应该是:
>>> s.format(comp=comp)
format
区分位置参数和命名参数的使用。
通过在格式字符串中使用变量的名称,您需要提供具有该特定名称的命名参数。
在第一种情况下,你是因为你正在调用 "".format(<name>=<var>)
而在第二种情况下,你只是给出了一个由 comp
字典填充的位置参数(位置 0)。
如果您已阅读文档,您会注意到格式可以这样使用位置参数:"Hello {0}!".format(<arg0>)
.
在第二种情况下,您没有给出所需的名称参数 comp
,而是给出了位置参数 0.