python中将json数据结构转化为excel表格
文件数据
文件名: json.txt
数据类型:列表嵌套字典
例如下面👇
[
{"name":"23675-用户增长产品经理(北京)",
"csategory":"产品/项日类",
"count":"1",
"loaction":"一北京",
"tiem":"2018-08-06",
},
{
"name":"23675-用户增长产品经理(北京)",
"category":"产品/项日类",
"count":"1",
"loaction":"一北京",
"tiem":"2018-08-06"
},
{
"name":"23675-用户增长产品经理(北京)",
"category":"产品/项日类",
"count":"1",
"loaction":"一北京",
"tiem":"2018-08-06"},
{
"name":"23675-用户增长产品经理(北京)",
"category":"产品/项日类",
"count":"1",
"loaction":"一北京",
"tiem":"2018-08-06"
}
]
报错问题总结
- JSONDecodeError: 一般为json格式错误
- json在线解析和格式校验
- keyerror: 这种错误没复现。如果有这种错误,把文件数据发出来,再瞅瞅
两种形式转换为excel
一、直接写入到excel
- 前提需要安装
tablib
- 命令:
pip install tablib[all]
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import json
import tablib
# json.text文件的格式: [{"a":1},{"a":2},{"a":3},{"a":4},{"a":5}]
# 获取json数据
with open('json.txt', 'r') as f:
rows = json.load(f)
# 将json中的key作为header, 也可以自定义header(列名)
header=tuple([ i for i in rows[0].keys()])
data = []
# 循环里面的字典,将value作为数据写入进去
for row in rows:
body = []
for v in row.values():
body.append(v)
data.append(tuple(body))
data = tablib.Dataset(*data,headers=header)
open('data.xls', 'wb').write(data.xls)
二、先通过csv模块将json数据类型转化为csv格式,再导入表格
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import csv
# 获取json数据
import json
with open('json.txt', 'r') as f:
rows = json.load(f)
# 创建文件对象
f = open('data.csv', 'w')
# 通过文件创建csv对象
csv_write = csv.writer(f)
# writerow: 按行写入, writerows: 是批量写入
# 写入数据 取列表的第一行字典,用字典的key值做为头行数据
csv_write.writerow(rows[0].keys())
# 循环里面的字典,将value作为数据写入进去
for row in rows:
csv_write.writerow(row.values())
# 关闭打开的文件
f.close()
这是csv格式数据,以逗号分隔
先新建excel表格
找到数据里面的自文本,导入上面的csv格式文件
选择逗号分隔,下面是数据预览,没问题就可以点下一步了
按照上面不走来即可,就可以看到数据已经转为表格形式了。