python - 如何将 JSON 转换为 CSV?

标签 python json csv json-normalize

我有一个想要转换为 CSV 文件的 JSON 文件。如何用 Python 做到这一点?

我试过了:

import json
import csv

f = open('data.json')
data = json.load(f)
f.close()

f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
    csv_file.writerow(item)

f.close()

但是,它不起作用。我正在使用 Django,我收到的错误是:

`file' object has no attribute 'writerow'`

然后我尝试了以下方法:

import json
import csv

f = open('data.json')
data = json.load(f)
f.close()

f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
    f.writerow(item)  # ← changed

f.close()

然后我得到错误:

`sequence expected`

示例 json 文件:

[{
        "pk": 22,
        "model": "auth.permission",
        "fields": {
            "codename": "add_logentry",
            "name": "Can add log entry",
            "content_type": 8
        }
    }, {
        "pk": 23,
        "model": "auth.permission",
        "fields": {
            "codename": "change_logentry",
            "name": "Can change log entry",
            "content_type": 8
        }
    }, {
        "pk": 24,
        "model": "auth.permission",
        "fields": {
            "codename": "delete_logentry",
            "name": "Can delete log entry",
            "content_type": 8
        }
    }, {
        "pk": 4,
        "model": "auth.permission",
        "fields": {
            "codename": "add_group",
            "name": "Can add group",
            "content_type": 2
        }
    }, {
        "pk": 10,
        "model": "auth.permission",
        "fields": {
            "codename": "add_message",
            "name": "Can add message",
            "content_type": 4
        }
    }
]

最佳答案

pandas library , 这就像使用两个命令一样简单!

df = pd.read_json()

read_json将 JSON 字符串转换为 pandas 对象(系列或数据框)。那么:

df.to_csv()

可以返回字符串或直接写入 csv 文件。请参阅 to_csv 的文档.

基于之前答案的冗长,我们都应该感谢 pandas 的捷径。

对于非结构化 JSON,请参阅 this answer .

编辑: 有人要求提供一个可行的最小示例:

import pandas as pd

with open('jsonfile.json', encoding='utf-8') as inputfile:
    df = pd.read_json(inputfile)

df.to_csv('csvfile.csv', encoding='utf-8', index=False)

关于python - 如何将 JSON 转换为 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1871524/

相关文章:

python - 创建 Python 电子邮件(接收)服务器

python - 在 Python 中削减列表字典

java - 警惕将较长的 List<String> 扁平化为 String

php - 使用 PHP、JavaScript 解析位于另一台服务器上的 CSV

python - Pandas read_csv 中的段错误

python - 函数调用不起作用 python

python - 我可以用 sum() 加入列表吗?

iphone - json返回格式

python json dumps 将对象放入 row_to_json 返回的对象中

java - 如何在Java中将csv文件导入mongodb