Python将通用Json分解成表格式

时间:2017-09-20 19:18:30

标签: python json

我只是想将简单的Json转换为CSV,使其像表格式一样,因此我可以轻松地将它们加载到我的数据库中。

我正在尝试创建一些通用代码来解析一些具有不同元数据的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)

有人可以给我看一些示例代码吗?

由于

3 个答案:

答案 0 :(得分: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']})

答案 1 :(得分:0)

我尝试了你的示例代码,似乎有必要在冒号后用空格格式化.json,就像这样。

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

然后你可以逐行读入你的代码到dict中。 其他所有内容都可以在这里找到:

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

答案 2 :(得分:0)

阅读JSON很好。您需要使用csv.DictWriter写入csv。它还允许您在fieldnames文件中提供headers,因此csv

这将进行转换 -

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以获取更多帮助。