我有一个JSON文件要转换成CSV文件。我怎么能用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。你需要把它改成这样:
下面是我从中生成CSV的代码:
输出为:
我假设您的JSON文件将解码成一个字典列表。首先,我们需要一个函数来压平JSON对象:
在JSON对象上运行此代码段的结果:
是
将此函数应用于JSON对象的输入数组中的每个dict之后:
找到相关的列名:
通过csv模块运行这个并不难:
我希望这有帮助!
使用
pandas
library,这就像使用两个命令一样简单!将JSON字符串转换为pandas对象(序列或数据帧)。然后,假设结果存储为
df
:它可以返回字符串或直接写入csv文件。
基于之前答案的冗长,我们都应该感谢熊猫的捷径。
相关问题 更多 >
编程相关推荐