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文件的构建

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐