如何将复杂CSV文件转换为指定格式的JSON?
解决CSV转JSON时指定字段数组化与引号转义问题
核心思路
- 读取CSV时保留字段映射,对目标字段做字符串分割转数组
- 利用Python内置
json模块自动处理引号转义,无需手动添加转义字符
完整代码实现
import csv import json # 定义需要转为数组的目标字段 TARGET_FIELDS = {'population_mesh', 'population', 'intervention', 'Outcomes'} def csv_to_json(csv_file_path, json_file_path): data = [] with open(csv_file_path, mode='r', encoding='utf-8') as csv_file: csv_reader = csv.DictReader(csv_file) for row in csv_reader: processed_row = {} for key, value in row.items(): if key in TARGET_FIELDS: # 处理空值:空字符串转为空数组 if not value.strip(): processed_row[key] = [] else: # 假设CSV中数组元素用逗号分隔,可根据实际调整分隔符 processed_row[key] = [item.strip() for item in value.split(',')] else: processed_row[key] = value data.append(processed_row) # 写入JSON,json模块自动处理双引号转义 with open(json_file_path, mode='w', encoding='utf-8') as json_file: json.dump(data, json_file, ensure_ascii=False, indent=2) # 调用示例(替换为你的文件路径) csv_to_json('input.csv', 'output.json')
关键说明
- 字段数组化:默认按逗号分割字符串,若CSV中数组元素用其他分隔符(如分号),只需修改
value.split(',')中的分隔符即可 - 引号转义:
json.dump会自动处理字符串中的双引号,比如原字符串中的"abc"会被序列化为\"abc\",完全符合JSON格式要求 - 空值处理:针对空字符串字段转为空数组,避免出现
null或无效数组格式
内容的提问来源于stack exchange,提问作者hpatel
相关产品推荐
相关产品推荐

