【发布时间】:2020-05-18 15:58:45
【问题描述】:
我想将一种 json 文件格式转换为另一种格式。 输入 json 文件的样子,
json1 = {"Roll Number":{"0":"12345675890"},"Exam Code":{"0":"125"},"q1":{"0":"A"},"q2":{"0":"B"},"q3":{"0":"B"},"q4":{"0":"C"},"q5":{"0":"C"}
这里你可以认为0是第0个学生(第一个学生的答题卡)
我想要这种输出格式,
json2 = {
"id": 1,
"Roll Number": 12345675890,
"Exam Code": 125,
"qtn_ans_id": 1, #this is question number
"field1": 0,
"field2": 0,
"field3": 1, #if ans is C then field3=1 and else is 0
"field4": 0,
}
在json1中它包含5个问题答案和详细信息,我想将它转换成json2,我的代码是
import json
将 json 文件存储到数据中
with open('json1.json') as data_file:
data = json.load(data_file)
写入默认格式
format = {"table": "omr",
"rows":
[
{
"id": 1,
"regist_no": 1215152,
"exam_id": 125,
"qtn_ans_id": 1,
"field1": 0,
"field2": 0,
"field3": 0,
"field4": 0,
}
]
}
我的虚拟代码
json2 = {}
for (k, v) in data.items():
if(k=='Roll Number'):
format['rows'][0]['regist_no']=v['0']
if(k=='Exam Code'):
format['rows'][0]['exam_id'] = v['0']
if(v['0']=='A'):
format['rows'][0]['field1'] = 1
elif(v['0']=='B'):
format['rows'][0]['field2'] = 1
elif(v['0']=='C'):
format['rows'][0]['field3'] = 1
elif(v['0']=='D'):
format['rows'][0]['field4'] = 1
json2.append(format['rows'])
我得到的错误输出是,
[{
'field1': 1,
'field2': 1,
'field3': 1,
'field4': 1
}]
所有字段值为 1。 对于答案 A Right 输出可以是,
[{
'field1': 1,
'field2': 0,
'field3': 0,
'field4': 0
}]
或者有没有其他方法,比如使用熊猫数据框。 我知道这是一个冗长而愚蠢的问题,但如果有人能提供帮助,我会很高兴。谢谢!
【问题讨论】: