我是python的新手,我想使用python将Json文件以下转换为CSV文件。 请不要在代码中传递整个json数据。只需在代码中传递整个Json文件即可。
{
"Breakfast": {
"Brk_item1": "Milk",
"Brk_item2": "Egg"
},
"Lunch": {
"Lnc_item1": "Pasta",
"Lnc_item2": "Sprouts"
},
"Dinner": {
"Dnr_item1": "Pizza",
"Dnr_item2": "Burger"
}
},
{
"Breakfast": {
"Brk_item1": "Bread",
"Brk_item2": "Butter"
},
"Lunch": {
"Lnc_item1": "Indian Meal",
"Lnc_item2": "Paratha"
},
"Dinner": {
"Dnr_item1": "Roti",
"Dnr_item2": "Paneer"
}
}
我的预期输出将类似于下面的CSV格式
Brk_item1 Brk_item2 Lnc_item1 Lnc_item2 Dnr_item1 Dnr_item2
Milk Egg Pasta Sprouts Pizza Burger
Bread Butter Indian Meal Paratha Roti Paneer
这是我到目前为止尝试过的:
import json
import csv
with open("./sample.json") as file:
data = json.load(file)
fname="output.csv"
with open(fname,"w") as file:
csv_file = csv.writer(file)
csv_file.writerow ([ "Brk_item1","Brk_item2","Lnc_item1","Lnc_item2","Dnr_item1","Dnr_item2"])
for item in data["Breakfast"]:
csv_file.writerow([item["Brk_item1"],item["Brk_item2"],item["Lnc_item1"],item["Lnc_item2"],item["Dnr_item1"],item["Dnr_item2"]])
答案 0 :(得分:0)
第一步是写文件头(正确完成)。
csv_file = csv.writer(file)
csv_file.writerow (["Brk_item1","Brk_item2","Lnc_item1","Lnc_item2","Dnr_item1","Dnr_item2"])
如果您加载的json数组是字典数组,则下一步是迭代数组元素for elem in data
。因此,在此步骤中,每个元素都是一个包含3个元素的字典:Breakfast
,Lunch
,Dinner
。
可以使用多种方法来附加值,但是由于dict的元素名称都不同,只有3个元素并且它们始终相同,所以简单的方法是对值进行硬编码。
fname="output.csv"
with open(fname,"w") as file:
csv_file = csv.writer(file)
csv_file.writerow (["Brk_item1","Brk_item2","Lnc_item1","Lnc_item2","Dnr_item1","Dnr_item2"])
for elem in data:
csv_file.writerow([elem['Breakfast']['Brk_item1'],elem['Breakfast']['Brk_item2'],elem['Lunch']['Lnc_item1'], elem['Lunch']['Lnc_item2'], elem['Dinner']['Dnr_item1'],elem['Dinner']['Dnr_item2']])