我希望能够访问带有str.format()
点的字典中的密钥。我怎么能这样做?
例如,没有点的键的格式有效:
>>> "{hello}".format(**{ 'hello' : '2' })
'2'
但是当密钥中有一个点时它不会出现:
>>> "{hello.world}".format(**{ 'hello.world' : '2' })
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'hello'
答案 0 :(得分:7)
你做不到。 Format String Syntax仅支持 整数或有效的Python标识符作为键。来自文档:
arg_name ::= [identifier | integer]
其中identifier
为defined as:
标识符(也称为名称)由以下词汇定义描述:
identifier ::= (letter|"_") (letter | digit | "_")*
不允许使用点(或分号)。
您可以将词典用作第二级对象:
"{v[hello.world]}".format(v={ 'hello.world' : '2' })
这里我们将字典分配给名称v
,然后使用密钥名称将其编入索引。这些可以是任何字符串,而不仅仅是标识符。
答案 1 :(得分:0)
您可以使用string.Template
- substitute
方法接受词典