Python-如何将JSON转换为CSV?

我有一个要转换为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

}

}

]

回答:

首先,你的JSON具有嵌套对象,因此通常无法直接将其转换为CSV。你需要将其更改为以下内容:

{

"pk": 22,

"model": "auth.permission",

"codename": "add_logentry",

"content_type": 8,

"name": "Can add log entry"

},

......]

这是从中生成CSV的代码:

import csv

import json

x = """[

{

"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

}

}

]"""

x = json.loads(x)

f = csv.writer(open("test.csv", "wb+"))

# Write CSV Header, If you dont need that, remove this line

f.writerow(["pk", "model", "codename", "name", "content_type"])

for x in x:

f.writerow([x["pk"],

x["model"],

x["fields"]["codename"],

x["fields"]["name"],

x["fields"]["content_type"]])

你将获得以下输出:

pk,model,codename,name,content_type

22,auth.permission,add_logentry,Can add log entry,8

23,auth.permission,change_logentry,Can change log entry,8

24,auth.permission,delete_logentry,Can delete log entry,8

以上是 Python-如何将JSON转换为CSV? 的全部内容, 来源链接: utcz.com/qa/433875.html

回到顶部