如何将JSON转换为CSV?我有一个JSON文件,我想要隐藏到一个CSV文件。我怎样才能用Python做到这一点呢?我试过:import jsonimport 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)f.close()但是,这是行不通的。我正在使用Django,收到的错误是:file' object has no attribute 'writerow'于是,我尝试了以下几点:import jsonimport 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()然后我得到错误: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
}
}]
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
def flattenjson( b, delim ):
val = {}
for i in b.keys():
if isinstance( b[i], dict ):
get = flattenjson( b[i], delim )
for j in get.keys():
val[ i + delim + j ] = get[j]
else:
val[i] = b[i]
return valflattenjson( {
"pk": 22,
"model": "auth.permission",
"fields": {
"codename": "add_message",
"name": "Can add message",
"content_type": 8
}
}, "__" ){
"pk": 22,
"model": "auth.permission',
"fields__codename": "add_message",
"fields__name": "Can add message",
"fields__content_type": 8
}input = map( lambda x: flattenjson( x, "__" ), input )
columns = [ x for row in input for x in row.keys() ]columns = list( set( columns ) )
with open( fname, 'wb' ) as out_file: csv_w = csv.writer( out_file ) csv_w.writerow( columns ) for i_r in input: csv_w.writerow( map( lambda x: i_r.get( x, "" ), columns ) )
添加回答
举报
0/150
提交
取消
