首页 > 解决方案 > 使用python 3将Json嵌套到csv

问题描述

我正在尝试将 JSON 数据转换为 Python 中的 CSV,并在不久前在 Stack Exchange 上找到了这段代码(链接:如何将 JSON 转换为 CSV?)。它不再适用于 Python 3,给我带来不同的错误。有人知道如何修复 Python 3 吗?谢谢。

以下是我的 JSON 数据:

{ "fruit": [ 
    { "name": "Apple", 
      "binomial name": "Malus domestica", 
      "major_producers": [ "China", "United States", "Turkey" ], 
      "nutrition": 
          { "carbohydrates": "13.81g", 
            "fat": "0.17g", 
            "protein": "0.26g" 
          } 
     }, 
     { "name": "Orange", 
       "binomial name": "Citrus x sinensis", 
       "major_producers": [ "Brazil", "United States", "India" ],
       "nutrition": 
          { "carbohydrates": "11.75g", 
            "fat": "0.12g", 
            "protein": "0.94g" 
          } 
      }, 
      { "name": "Mango", 
        "binomial name": "Mangifera indica", 
        "major_producers": [ "India", "China", "Thailand" ],
        "nutrition": 
            { "carbohydrates": "15g", 
              "fat": "0.38g", 
              "protein": "0.82g" 
            } 
       } 
] }

输出 CSV 应如下所示

在此处输入图像描述

标签: pythonpython-3.xcsv

解决方案


最简单的方法是将所需的 dict 放入 pandas 数据框并使用其.to_csv()方法:

json_data = { "fruit": [ { "name": "Apple", "binomial name": "Malus domestica", "major_producers": [ "China", "United States", "Turkey" ], "nutrition": { "carbohydrates": "13.81g", "fat": "0.17g", "protein": "0.26g" } }, { "name": "Orange", "binomial name": "Citrus x sinensis", "major_producers": [ "Brazil", "United States", "India" ], "nutrition": { "carbohydrates": "11.75g", "fat": "0.12g", "protein": "0.94g" } }, { "name": "Mango", "binomial name": "Mangifera indica", "major_producers": [ "India", "China", "Thailand" ], "nutrition": { "carbohydrates": "15g", "fat": "0.38g", "protein": "0.82g" } } ] }
df = pd.DataFrame(json_data['fruit'])
df.to_csv('/wherever/file/shall/roam/test.csv')

这会导致一个 csv 文件,如

在此处输入图像描述


推荐阅读