2017-09-20 67 views
1

我只是試圖將簡單的Json轉換爲CSV格式,使其像表格格式一樣,因此我可以輕鬆地將它們加載到我的數據庫中。Python將通用Json解析爲表格格式

我想創建一些通用代碼來解析一些Json與不同的元數據,所以我希望我不必指定列名,而是希望Python會生成列名本身。 就像此JSON

[ 
{ 
    "name":"mike", 
    "sal":"1000", 
    "dept":"IT", 
}, 
{ 
    "name":"Joe", 
    "sal":"1200", 
    "dept":"IT", 
} 
] 

,使其格式是這樣的:

name sal dept 
Mike 1000 IT 
Joe 1200 IT 

我用下面的代碼,但它不工作

import json 
import csv 
infile = open(r'c:\test\test.json', 'r') 
outfile = open(r'c:\test\test.csv', 'w') 
writer = csv.writer(outfile) 
for row in json.loads(infile.read()): 
    writer.writerows(row) 

能有人告訴我一些樣本代碼來做到這一點?

感謝

回答

1

這將幫助你:

writer = csv.DictWriter(f, fieldnames=['name', 'sal', 'dept']) 
writer.writeheader() 
for i in json.loads(a): 
    writer.writerow({'name': i['name'], 'sal': i['sal'], 'dept': i['dept']}) 
0

我想你的示例代碼和它似乎是必要的冒號後格式化用空格您上傳.json,像這樣。

[ 
{ 
    "name": "mike", 
    "sal": "1000", 
    "dept": "IT", 
}, 
{ 
"name": "Joe", 
"sal": "1200", 
"dept": "IT", 
} 
] 

然後你可以在你的代碼中逐行讀入字典。 其他的一切都可以在這裏找到:

How do I convert this list of dictionaries to a csv file? [Python]

0

JSON是罰款。您需要使用csv.DictWriter來寫入csv。它也允許您在csv文件中提供fieldnames以及headers

這將做轉換 -

import json 
import csv 
infile = open(r'test.json', 'r') 
with open('test.csv', 'w') as csvfile: 
    fieldnames = ['name', 'sal', 'dept'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 
    writer.writeheader() 
    for row in json.loads(infile.read()): 
     print(row) 
     writer.writerow(row) 

可做參考https://docs.python.org/2/library/csv.html進一步的幫助。