You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:45:02