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

2024-10-06 08:34:39 发布

您现在位置: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"]])

Tags: 文件csv代码jsonitemfileitem1milk
1条回答
网友
1楼 · 发布于 2024-10-06 08:34:39

第一步是写入文件头(您做得正确)

csv_file = csv.writer(file)
csv_file.writerow (["Brk_item1","Brk_item2","Lnc_item1","Lnc_item2","Dnr_item1","Dnr_item2"])

如果加载的json数组是dict数组,那么下一步是迭代数组元素for elem in data。因此,在这一步中,每个元素都是一个dict,它有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']])

相关问题 更多 >