python中 将json数据转化为excel表格

json数据格式

这里我需要进行数据转换的json数据格式有亿点复杂,为了方便我后续的处理,我想把他转换成excel来观察,json数据如下所示:
在这里插入图片描述

借助python代码查看后,得知json数据构成:2500组数据,以列表形式存储,列表中的每一个元素构成是大小为2的列表,一号位为字符串 title ‘SH603919_2017-08-03_1203757451’,代表文档名称,而2号位为字典,包含了具体存储元素 {},如果我需要生成excel,重点在于第二个元素

两种形式转换为excel

一、直接写入到excel

具体做法如下:



import json
import tablib



# 获取json数据
with open('json.txt', 'r') as f:
    rows = json.load(f)

# 将json中的key作为header, 也可以自定义header(列名)
header=tuple([ i for i in rows[0][1].keys()])

data = []
# 循环里面的字典,将value作为数据写入进去
for i in range(len(rows)):
    body = []
    for v in row[i][1].values():
        body.append(v)
    data.append(tuple(body))

data = tablib.Dataset(*data,headers=header)

open('data.xls', 'wb').write(data.xls)

但这个方法,对数据的value部分有着严格的要求,我在运行时,报了数据格式的错,我仔细检查也没有查出来,也没有查出来,而且在value部分的数据有的类型是list,有的依然是dict,可能是dict中的数据有类型问题;

二、先通过csv模块将json数据类型转化为csv格式,再导入表格

import json
import tablib
import csv

# 获取json数据
with open('sample_train.json', 'r',encoding='utf-8',errors='ignore') as f:
  rows = json.load(f)
# 将json中的key作为header, 也可以自定义header(列名)

#print(type(rows))#2500组数据,以列表形式存储,
#列表中的每一个元素构成是大小为2的列表
#一号位为字符串 title 'SH603919_2017-08-03_1203757451'
#而号位为字典,包含了具体存储元素 {}
#如果我需要生成excel,重点在于第二个元素

print(rows[0][1])

header=tuple([ i for i in rows[0][1].keys()])
# for i in rows[0][1]:
#   print(type(i))


# 创建文件对象
f = open('data.csv', 'w',encoding='utf-8')
csv_write = csv.writer(f)
csv_write.writerow(rows[0][1].keys())
for i in range(len(rows)):
  csv_write.writerow(rows[i][1].values())
f.close()
获取到的csv数据,以逗号分隔

在这里插入图片描述

利用excel来完成文件的转换

在这里插入图片描述

找到数据里面的自文本,导入上面的csv格式文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
最终完成excel文件的构建

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值