Python将Excel转JSON时如何把NoneType替换为空字符串
实现方案
你只需要在给字典赋值时对单元格取值做非空判断即可,同时可以修复原代码会额外生成首条空字典、中文显示异常的问题,修改后完整代码如下:
from openpyxl import load_workbook from openpyxl.utils import get_column_letter import json wb = load_workbook(filename='C:\\Python39\data.xlsx') ws = wb.active my_list = [] last_column = len(list(ws.columns)) last_row = len(list(ws.rows)) for row in range(1, last_row + 1): my_dict = {} for column in range(1, last_column + 1): column_letter = get_column_letter(column) if row > 1: # 新增空值判断:如果单元格值为None则替换为空字符串 cell_value = ws[column_letter + str(row)].value my_dict[ws[column_letter + str(1)].value] = cell_value if cell_value is not None else '' # 仅数据行加入列表,避免首条生成空字典 if row > 1: my_list.append(my_dict) # 新增ensure_ascii=False避免中文转为Unicode编码 data = json.dumps(my_list, sort_keys=True, indent=4, ensure_ascii=False) with open('C:\\Python39\data.json', 'w', encoding='utf-8') as f: f.write(data)
修改说明
- 核心逻辑:读取单元格值后先判断是否为
None(对应Excel空单元格),是则替换为空字符串,数字、布尔值、正常文本等合法值不会被误修改 - 优化项1:调整列表追加逻辑,仅处理非表头的行数据,避免生成的JSON文件首条为无效空字典
- 优化项2:在
json.dumps中新增ensure_ascii=False参数,避免Excel中的中文内容在JSON中显示为乱码的Unicode编码
内容的提问来源于stack exchange,提问作者Devdatt N
相关产品推荐
相关产品推荐

