继上篇完成“(一)利用xlrd解析员工疫情Excel
”,下面介绍下利用python自带的json模块如何将Excel解析后的数据生成json文件。
一,利用ExcelReader类中的data_dict()方法生成data数组
def data_dict(self):
返回了前面定义的
data = []
其核心就是通过两个for循环,遍历excel的sheet内容:
# Excel表头占了两行,所以从第3行开始读取数据,循环rows(总行数)-1次
for i in range(2, self.rows):
# 循环内定义一个字典,每次循环都会清空
dict = {}
# 从第一列开始读取数据,循环cols(总列数)次
for j in range(0, self.cols):
# 将value值关联同一列的key值
dict[keys[j]] = str(self.table.row_values(i)[j])
# 将关联后的字典放到数组里
data.append(dict)
剩下要解决的就是如何将data数组,系列化为json文件。
2,python的json模块可以很简单的解决这个问题
json 模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps() 和 json.loads()。
1.json.dumps将一个Python数据结构转换为JSON:
import json
data = {
'name' : 'myname',
'age' : 100,
}
json_str = json.dumps(data)
2.json.loads将一个JSON编码的字符串转换回一个Python数据结构:
data = json.loads(json_str)
3.json.dump() 和 json.load() 来编码和解码JSON数据,用于处理文件。
with open('test.json', 'w') as f:
json.dump(data, f)
with open('test.json', 'r') as f:
data = json.load(f)
通过json.dump生成文件时,如果有中文,最好加入encoding和ensure_ascii参数:
def data_dict_to_json(self, data):
# 获取生成json所在文件目录
file_name = self.excel_path + '.json'
with open(file_name, 'w', encoding='utf-8') as file_object:
json.dump(data, file_object, ensure_ascii=False)
return file_object
这样,就可以在解析Excel所在的目录下,生成了一个同名但后缀为".json"的文件了。