强制dict键用作str.format的参数说明符

时间:2017-11-06 13:55:10

标签: python string format

我有以下字符串插值:

>>> a = {'test1.1': 5}
>>> 'test: {test1.1}'.format(**a)
KeyError: 'test1'

它显然失败了,因为格式试图访问对象test1及其属性1。有没有办法格式化这个字符串并强制将键值作为字符串? (寻找Python 2和3解决方案。)

2 个答案:

答案 0 :(得分:10)

有点黑客,但这就是诀窍:

In [5]: 'test: {0[test1.1]}'.format(a)
Out[5]: 'test: 5'

使用与[..]类似的dict索引。 0是位置索引,a是0 th 参数。如果它是唯一的参数,您可以省略 0

答案 1 :(得分:3)

另一种选择。旧的%风格格式并不关心:

>>> a = {'test1.1': 5}
>>> 'test: %(test1.1)s' % a
'test: 5'