如何用Python简化JSON结构以优化CSV转换?
处理JSON结构清理并转换为CSV的实现
你可以先将JSON读取为Python字典,手动清理数组字段的内容,再转换为DataFrame导出CSV,具体实现如下:
完整代码
import json import pandas as pd # 读取原始JSON文件 with open('test.json', encoding='utf-8') as inputfile: data = json.load(inputfile) # 遍历处理每个字段 cleaned_data = {} for key, value in data.items(): # 判断当前字段是否为数组类型 if isinstance(value, list): # 提取所有name字段,并用换行符拼接 names = [item.get('name', '') for item in value] cleaned_data[key] = '\n'.join(names) else: # 非数组字段直接保留原内容 cleaned_data[key] = value # 转换为DataFrame并导出CSV df = pd.DataFrame([cleaned_data]) df.to_csv('test.csv', encoding='utf-8', index=False)
关键逻辑说明
- 先用
json.load()将JSON文件读取为Python字典,方便逐字段处理 - 遍历字典时,通过
isinstance(value, list)判断字段是否是数组:- 若是数组,用列表推导式提取每个元素的
name(如果元素没有name字段则留空),再用'\n'.join()拼接成带换行符的字符串 - 非数组字段直接保留原始值(包括
null)
- 若是数组,用列表推导式提取每个元素的
- 最后将清理后的字典转为DataFrame时,用
[cleaned_data]包裹,确保生成正确的单行数据结构
如果你的JSON文件是包含多条数据的数组(比如[{...}, {...}]),可修改为以下版本:
import json import pandas as pd with open('test.json', encoding='utf-8') as inputfile: data_list = json.load(inputfile) cleaned_list = [] for data in data_list: cleaned_data = {} for key, value in data.items(): if isinstance(value, list): names = [item.get('name', '') for item in value] cleaned_data[key] = '\n'.join(names) else: cleaned_data[key] = value cleaned_list.append(cleaned_data) df = pd.DataFrame(cleaned_list) df.to_csv('test.csv', encoding='utf-8', index=False)
这样处理后就能得到你期望的结构,再导出为CSV文件。
内容的提问来源于stack exchange,提问作者KLB
相关产品推荐
相关产品推荐

