excel表格中的数据,转化为json格式,再用程序去处理json数据,是常见的数据处理方式。这样可以实现按照需求去做数据处理。
除了python环境外,主要用到读取excel文件的库,以及json数据格式处理库。
常用的excel库:
openpyxl: 可以用来读写Excel文件的库。可以处理.xlsx文件,支持读取和写入单元格、行、列等操作。
xlrd:可以用来读取Excel文件的库。可以处理.xls文件,包括读取单元格、行、列等操作。
json库:
json:Python自带的JSON解析库,支持将JSON字符串解析成Python对象,也支持将Python对象转换为JSON字符串。
requests:第三方库requests可以快速发送HTTP请求,并自动解析JSON数据。
软件的安装:
例如,openpyxl的安装方式如下:
pip install openpyxl
workbook对象:对应于一个excel文件
Sheet对象:对应于一个sheet
单元格对象:sheet中的一个单元格
行:sheet中的行
列:sheet中的列
openpyxl和xlrd都支持以上概念,都有对应的获取方法。
例子1: 用openpyxl来进行excel的处理,json库来进行json数据的处理。
# -*- coding: utf-8 -*-import osimport sysimport openpyxlimport jsonimport io# 将json保存为文件def save2json(jd, json_file_name): file = io.open(json_file_name, 'w', encoding='utf-8') # 把对象转化为json对象 # indent: 参数根据数据格式缩进显示,读起来更加清晰 # ensure_ascii = True:默认输出ASCII码,如果把这个该成False, 就可以输出中文。 txt = json.dumps(jd, indent=2, ensure_ascii=False) file.write(txt) file.close()# excel表格转json文件def excel2json(excel_file, json_file_name): # 加载工作薄 book = openpyxl.load_workbook(excel_file) # 获取sheet页 sheet = book["Sheet1"] # 行数 max_row = sheet.max_row # 列数 max_column = sheet.max_column print("max_row: %d, max_column: %d" % (max_row, max_column)) # 结果,数组存储 result = [] heads = [] # 解析表头 for column in range(max_column): # 读取的话行列是从(1,1)开始 heads.append(sheet.cell(1, column + 1).value) # 遍历每一行 for row in range(max_row): if row == 0: continue one_line = {} for column in range(max_column): # 读取第二行开始每一个数据 k = heads[column] cell = sheet.cell(row + 1, column + 1) value = cell.value one_line[k] = value print(one_line) result.append(one_line) book.close() # 将json保存为文件 save_json_file(result, json_file_name)#mainif '__main__' == __name__: excel2json(u't1.xlsx', 'res.json')
例子2: 用xlrd来读取excel文件:
# -*- coding: utf-8 -*-import osimport sysimport jsonimport ioimport xlrd# 打开Excel文件,返回workbook对象wb = xlrd.open_workbook('a.xls')# 获取Sheet对象sheet = wb.sheet_by_name('Sheet1')# 读取某单元格的数据print(sheet.cell_value(0, 0))# 读取某行数据,返回一个列表row = sheet.row_values(1)print(row)# 读取某列数据,返回一个列表column = sheet.col_values(0)print(column)# 循环读取多行数据for i in range(sheet.nrows):row = sheet.row_values(i)print(row)
例子3: 用requests来处理网络数据:
import requestsurl = 'http://api.mytest.com/v1/user'response = requests.get(url)# 解析JSON数据data = response.json()print(data)# 访问JSON数据的某一项name = data[0]['name']print(name)
以上,就是本篇的内容了。
来源地址:https://blog.csdn.net/liranke/article/details/129891040