You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:31:06