.format() 中的 KeyError python 2.6

KeyError in .format() python 2.6

我尝试使用变量 typesource string format {0}{1} 但我得到 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"'

尝试在 json 转储中应用 str.format 是一个注定要失败的想法,原因有几个,主要原因是字符串转储 [=25= 的封闭 {} ] 格式。

我建议预先使用命名字段预处理您的字典:

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 语法(字典解析尚不可用):

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()}