格式:在字符串中使用大括号时的KeyError

Jui*_*icy 12 python format

我正在运行以下代码:

asset = {}
asset['abc'] = 'def'
print type(asset)
print asset['abc']
query = '{"abc": "{abc}"}'.format(abc=asset['abc'])
print query
Run Code Online (Sandbox Code Playgroud)

哪个引发KeyError错误:

[user@localhost] : ~/Documents/vision/inputs/perma_sniff $ python ~/test.py 
<type 'dict'>
def
Traceback (most recent call last):
  File "/home/user/test.py", line 5, in <module>
    query = '\{"abc": "{abc}"\}'.format(abc=asset['abc'])
KeyError: '"abc"'
Run Code Online (Sandbox Code Playgroud)

格式显然被包装混淆了{.如何确保格式只尝试替换(正确的)内部{abc}.

即,预期产量是:

{"abc": "def"}
Run Code Online (Sandbox Code Playgroud)

(我知道我可以使用该json模块执行此任务,但我想避免这种情况.我更愿意使用格式.)

xnx*_*xnx 31

要插入文字大括号,请将其加倍:

query = '{{"abc": "{abc}"}}'.format(abc=asset['abc'])
Run Code Online (Sandbox Code Playgroud)

(这是记录在这里,但没有特别突出明显).


Pad*_*ham 5

将外部大括号包裹在大括号中:

query = '{{"abc": "{abc}"}}'.format(abc=asset['abc'])
print query
{"abc": "def"}
Run Code Online (Sandbox Code Playgroud)