我尝试使用变量string format
和{0}
{1}
type
和source
,但我得到KeyError
:
import json
data = {
"u_in_record_type": '{0}',
"u_company_source": '{1}'
}
data = json.dumps(data)
type="Test"
source="Test"
print(data.format(type, source))
Traceback (most recent call last):
File "untitled.py", line 10, in <module>
print(data.format(type, source))
KeyError: '"u_in_record_type"'
答案 0 :(得分:4)
尝试在json转储中应用str.format
是一个注定的想法,原因有几个,主要原因是字符串转储的封闭{}
冲突/丢失了格式。< / p>
我建议事先用命名字段预处理字典:
import json
data = {
"u_in_record_type": '{type}',
"u_company_source": '{source}'
}
type="Test"
source="Source"
new_data = {k:v.format(type=type,source=source) for k,v in data.items()}
Pre-python 2.7语法(dict comprehensions尚不可用):
new_data = dict((k,v.format(type=type,source=source)) for k,v in data.items())
字典理解将参数应用于所有记录,这些记录选择他们需要的记录。然后你可以转储那个版本的字典。
基于字典的变体(当有很多变量时可以很方便):
fd = dict(type="Test",source="Source")
new_data = {k:v.format(**fd) for k,v in data.items()}