如何移除JSON文件中最后一个逗号?附Python实现代码
解决JSON生成时末尾多余逗号的问题
我生成的JSON文件中,最后一个元素后面会多出一个逗号,导致JSON格式不合法:
错误的JSON输出:
[{"_index": "java", "_id": "15194804", "rating": 0}, {"_index": "java", "_id": "18264178", "rating": 0}, {"_index": "java", "_id": "16225177", "rating": 1}, {"_index": "java", "_id": "16445238", "rating": 0}, {"_index": "java", "_id": "17233226", "rating": 0}, ]
需要修正为没有多余逗号的合法JSON:
正确的JSON输出:
[{"_index": "java", "_id": "15194804", "rating": 0}, {"_index": "java", "_id": "18264178", "rating": 0}, {"_index": "java", "_id": "16225177", "rating": 1}, {"_index": "java", "_id": "16445238", "rating": 0}, {"_index": "java", "_id": "17233226", "rating": 0} ]
当前使用的Python代码:
with open(folder + "/" + str(a[i]) + ".json", 'w') as fp: fp.write("[\n") for i in range(len(ratings)): x = json.dumps(ratings[i]) fp.write("%s,\n" % x) fp.write("]\n") fp.close()
解决方案
方法一:直接序列化整个列表(推荐)
Python的json模块原生支持将整个列表序列化为合法JSON,不需要手动拼接字符串,这是最简洁且不易出错的方式:
import json # 直接将ratings列表写入文件,自动生成合法JSON with open(f"{folder}/{str(a[i])}.json", 'w') as fp: json.dump(ratings, fp, indent=2) # indent=2可生成格式化的缩进,按需调整
这样生成的JSON不仅没有多余逗号,还能自动处理格式缩进,同时with语句会自动关闭文件,无需手动调用fp.close()。
方法二:修改循环逻辑,避免最后一个元素加逗号
如果一定要手动拼接字符串,可以通过判断元素位置来控制是否添加逗号:
import json with open(f"{folder}/{str(a[i])}.json", 'w') as fp: fp.write("[\n") total_items = len(ratings) for idx, item in enumerate(ratings): item_str = json.dumps(item) # 最后一个元素只写入内容,不加逗号 if idx == total_items - 1: fp.write(f"{item_str}\n") else: fp.write(f"{item_str},\n") fp.write("]\n")
内容的提问来源于stack exchange,提问作者insanely_a_
相关产品推荐
相关产品推荐

