如何在python中将Json文件转换为CSV

时间:2020-05-14 23:12:15

标签: python

我是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"]])

1 个答案:

答案 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个元素的字典:BreakfastLunchDinner。 可以使用多种方法来附加值,但是由于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']])