Обречено пытаться применять str.format
в дампах json по нескольким причинам, главная из которых заключается в том, что включающий {}
дамп строки конфликтует / теряет форматирование.
Я бы предложил предварительно обработать ваш словарь с именованными полями:
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()}