如何将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 val
flattenjson( { "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
提交
取消