如何将Excel中的JSON输出转为表格?json_normalize()无效
解决方案
问题出在你直接对Excel里的字符串类型JSON使用json_normalize(),它无法识别字符串格式的JSON,只会把整个字符串当作单一对象处理,导致返回object类型的结果。需要先把JSON字符串解析为Python字典,再进行标准化处理,具体步骤如下:
步骤1:读取Excel并解析JSON字符串
首先用pandas读取Excel文件,然后将存储JSON的列从字符串解析为字典:
import pandas as pd import json # 替换为你的Excel文件路径 df = pd.read_excel("your_excel_file.xlsx") # 假设JSON数据在名为'json_column'的列中,解析为字典 # 可选:添加异常处理避免格式错误导致崩溃 def parse_json(s): try: return json.loads(s) except (json.JSONDecodeError, TypeError): return {} df['parsed_json'] = df['json_column'].apply(parse_json)
步骤2:标准化JSON并重命名列
用json_normalize()处理解析后的字典列,再将英文列名改为中文:
# 标准化JSON数据为表格格式 normalized_df = pd.json_normalize(df['parsed_json']) # 重命名列名 normalized_df = normalized_df.rename(columns={ 'text1': '文本1', 'text2': '文本2', 'text3': '文本3' })
步骤3:生成目标HTML表格(可选)
如果需要生成你展示的那种带样式的HTML表格,可以用to_html()方法:
# 生成HTML表格,指定类名 html_table = normalized_df.to_html(classes='s-table', index=False, header=True) # 包裹外层容器 full_html = f'<div class="s-table-container">{html_table}</div>' # 打印结果或保存到文件 print(full_html) # 保存到HTML文件 with open('result_table.html', 'w', encoding='utf-8') as f: f.write(full_html)
关键说明
- Excel中的JSON是字符串格式,必须先通过
json.loads()转换为Python字典,json_normalize()才能正确识别并展开为多列。 - 如果JSON列存在空值或格式错误,
parse_json()里的异常处理会返回空字典,避免程序中断。
内容的提问来源于stack exchange,提问作者treppenwitz
相关产品推荐
相关产品推荐

