Python实现CSV转JSON输出格式不符,求代码修改建议
CSV转JSON输出格式不符修复方案
你的现有代码基础逻辑正确,输出和预期不一致可对照以下几点排查修改:
常见原因及修复方法
- CSV表头与预期字段不匹配
你需要保证CSV第一行的表头严格为id,MobileNo,不能有拼写错误、多余空格、其他多余列。如果CSV表头不符合要求,可直接修改CSV表头,也可以在代码中手动做字段映射,避免输出的JSON键名错误。 - 存在多余字段需要过滤
如果CSV中存在除id、MobileNo之外的多余列,不需要输出到JSON中,可在遍历行时手动构造只包含所需字段的字典,丢弃多余内容。 - 字段类型不符合预期
可手动将字段值转为字符串类型,避免id等字段输出为数字格式,和预期的字符串格式不匹配。 - CSV分隔符不是默认逗号
如果你的CSV用分号、制表符等作为分隔符,需要在csv.DictReader中指定delimiter参数,比如制表符传delimiter='\t',分号传delimiter=';'。
修复后完整代码
import csv import json def csv_to_json(csvFilePath, jsonFilePath): jsonArray = [] with open(csvFilePath, encoding='utf-8') as csvf: # 若CSV分隔符非逗号,在此处添加delimiter参数指定 csvReader = csv.DictReader(csvf) for row in csvReader: # 手动构造目标格式字典,过滤多余字段、统一字段类型 formatted_row = { "id": str(row["id"]), "MobileNo": str(row["MobileNo"]) } jsonArray.append(formatted_row) with open(jsonFilePath, 'w', encoding='utf-8') as jsonf: # 添加ensure_ascii=False避免特殊字符乱码 json.dump(jsonArray, jsonf, indent=4, ensure_ascii=False) if __name__ == "__main__": csvFilePath = r'my_csv_data.csv' jsonFilePath = r'data.json' csv_to_json(csvFilePath, jsonFilePath)
测试用CSV示例
你可以使用以下内容的my_csv_data.csv测试代码,输出结果会和你给出的预期格式完全一致:
id,MobileNo 1,923002546363 2,923343676143
内容的提问来源于stack exchange,提问作者nomanahmedna
相关产品推荐
相关产品推荐

