Python3实现多行CSV转JSON:为字段键添加MMSA前缀重复标识
回答
没问题,只需要在遍历每一行CSV数据时,给除MMSA之外的所有字段键加上对应行的MMSA值作为前缀就可以实现需求了。下面是修改后的完整代码:
import csv import json def make_json(csvFilePath, jsonFilePath): data = {} with open(csvFilePath, encoding='utf-8') as csvf: csvReader = csv.DictReader(csvf) for row in csvReader: mmsa_value = row['MMSA'] # 初始化转换后的行,保留原始MMSA字段 transformed_row = {'MMSA': mmsa_value} # 遍历所有字段,给非MMSA字段添加前缀 for key, value in row.items(): if key != 'MMSA': new_key = f"{mmsa_value} {key}" transformed_row[new_key] = value # 将转换后的行存入数据字典 data[mmsa_value] = transformed_row # 写入JSON文件,保持格式化缩进 with open(jsonFilePath, 'w', encoding='utf-8') as jsonf: jsonf.write(json.dumps(data, indent=4)) csvFilePath = r'/home/user/Downloads/mmsa-icu-beds.csv' jsonFilePath = r'/home/user/Downloads/mmsa-icu-beds.json' make_json(csvFilePath, jsonFilePath)
代码说明
- 首先提取当前行的
MMSA值,作为后续字段的前缀来源 - 创建一个新的字典
transformed_row,先保留原始的MMSA字段不变 - 遍历该行的所有字段,对非
MMSA的字段,用f-string拼接出新的键名(MMSA值 + 原始字段名),并把对应的键值对加入新字典 - 最后把转换后的行存入
data字典,再写入JSON文件
这样处理后,生成的JSON就会和你期望的格式完全一致,而且可以轻松处理数百行的CSV数据,不会有性能问题。
内容的提问来源于stack exchange,提问作者aravind kamarsu
相关产品推荐
相关产品推荐

