如何在python str.format中转义点

时间:2014-05-28 10:43:14

标签: python string-formatting

我希望能够访问带有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'

2 个答案:

答案 0 :(得分:7)

你做不到。 Format String Syntax仅支持 整数或有效的Python标识符作为键。来自文档:

arg_name          ::=  [identifier | integer]

其中identifierdefined as

  

标识符(也称为名称)由以下词汇定义描述:

identifier ::=  (letter|"_") (letter | digit | "_")*

不允许使用点(或分号)。

您可以将词典用作第二级对象:

"{v[hello.world]}".format(v={ 'hello.world' : '2' })

这里我们将字典分配给名称v,然后使用密钥名称将其编入索引。这些可以是任何字符串,而不仅仅是标识符。

答案 1 :(得分:0)

您可以使用string.Template - substitute方法接受词典