1.Excel数据
2.我们想要的JSON格式
{
"0": {
"raw_data1": "Sam",
"raw_data2": "Wong",
"raw_data3": "Good",
"layer": "12v1"
},
"1": {
"raw_data1": "Lucy",
"raw_data2": "Babe",
"raw_data3": "Pho",
"layer": "12v2"
}
}
3.python实现
- 用anaconda创建一个独立的python环境
(base)...$ conda create -n excel
- 切换到excel环境下,默认是在base环境:
(base)...$ conda activate excel
(excel)...$
- 安装pandas
(excel)...$ conda install pandas
安装好后,pandas会被放在excel的环境里,其他的环境不受影响。
- 查看当前环境的依赖
(excel)...$ conda list
打开visual studio code,设置python环境
我们这里使用vs code来开发,设置python环境就是选择我们刚刚创建出来的环境,因为只有里面有我们想要用到的依赖,具体设置如下:
点击vs code如下位置,打开设置:
-
在弹出来的选项中选择我们刚刚创建的环境就可以完成配置
-
python 代码实现
import pandas as pd
# read excel
xls = pd.read_excel('~/Desktop/Book1.xlsx')
xls.to_json(path_or_buf='book.json', orient='index')
结果如下:
- 上面的数据看起来没有那么好看,其实可以格式化一下,python代码实现:
# 导入pandas库
import pandas as pd
# 导入json库的两个工具loads将字符器转成json对象,dumps工具用于格式化
from json import loads,dumps
# 读取excel的数据
xls = pd.read_excel('~/Desktop/Book1.xlsx')
# 将excel数据转成json字符串
json_str = xls.to_json(orient='index')
# 将json字符器转成json对象
parsed = loads(json_str)
# 格式化json对象,所谓格式化就是有缩进换行等格式化的东西
format_data = dumps(parsed,indent=4)
# 将格式化后的数据写入book.json文件
with open('book.json','w') as f:
f.write(format_data)
结果是这样的:
我们还可以对获得的数据做更多的处理,比如我想将0,1这两个key换成对应的12v1和12v2,那么代码可以这么来写:
import pandas as pd
from json import loads,dumps
xls = pd.read_excel('~/Desktop/Book1.xlsx')
json_str = xls.to_json(orient='index')
parsed = loads(json_str)
# 与上面的程序比,区别只在这里,在格式化前对数据进行修改
# 创建一个字典,相当于java中的Map
dict = {}
# 遍历数据,对数据进行修改,修改后的数据都放在dict里
for key in parsed:
k = parsed[key]['layer']
dict[k] = parsed[key]
# 对修改后的数据dict进行格式化
format_data = dumps(dict,indent=4)
# 将格式化后的数据写入文件
with open('book.json','w') as f:
f.write(format_data)
结果如下: