Python从CSV生成JSON:修正格式问题(去尾逗号、加首尾括号)
解决CSV转JSON格式问题的正确姿势
嘿,我太懂你手动拼JSON格式时踩的这些坑了——最后一个元素的逗号删不掉、首尾括号重复、还要手动跳表头,简直头大!其实根本不用这么麻烦,Python自带的csv和json模块就能完美解决这些问题,完全不用手动拼接字符串。
核心思路:用字典列表直接生成标准JSON
正确的做法是先把CSV数据(跳过表头)转换成字典列表,然后直接用json模块写入文件,它会自动帮我们处理所有格式细节:
import csv import json # 1. 读取CSV并转换为字典列表(自动跳过表头) csv_data = [] with open("你的输入文件.csv", "r", encoding="utf-8") as csv_file: # DictReader会把CSV第一行作为字典的键,后续行自动转为键值对 csv_reader = csv.DictReader(csv_file) for row in csv_reader: csv_data.append(row) # 2. 写入标准JSON格式 with open("你的输出文件.json", "w", encoding="utf-8") as json_file: # json.dump会自动生成[{},{},...]格式,处理逗号和括号 json.dump(csv_data, json_file, indent=4) # indent=4是格式化换行,可选
为什么这能解决你的所有问题?
- 自动处理逗号和括号:
json.dump()会严格按照JSON规范生成数组格式,不会出现最后一个元素多逗号、重复加[]的情况。 - 自动跳过表头:
csv.DictReader默认把第一行作为字段名,遍历的时候直接从第二行数据开始,完美跳过表头。 - 类型灵活处理:如果需要把CSV里的字符串数字转成数值类型,只需要在遍历行的时候加几行处理代码就行,比如:
for row in csv_reader: # 把"age"字段从字符串转成整数 row["age"] = int(row["age"]) # 把"salary"字段从字符串转成浮点数 row["salary"] = float(row["salary"]) csv_data.append(row)
别再手动拼JSON字符串啦,内置模块已经帮我们把所有格式问题都搞定了,省心又靠谱!
内容的提问来源于stack exchange,提问作者sharp
相关产品推荐
相关产品推荐

