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

Python加载JSON文件时如何处理导致JSONDecodeError的多余[]字符?

解决JSONDecodeError及JSONL文件加载问题

看来你遇到的是典型的JSON格式损坏+JSONL文件加载方式不对的问题,我来一步步帮你解决:

1. 先修复文件中的格式错误

你提到的][是明显的语法错误,应该替换成}, {来衔接两个推文对象。可以用这个简单的Python脚本批量修复:

# 修复损坏的JSON格式
input_path = 'tweets_036.jsonl'
output_path = 'fixed_tweets_036.jsonl'

with open(input_path, 'r', encoding='utf-8') as in_file, open(output_path, 'w', encoding='utf-8') as out_file:
    # 读取整个文件内容
    raw_content = in_file.read()
    # 替换错误的 ][ 为正确的 }, {
    fixed_content = raw_content.replace('][', '}, {')
    # 写入修复后的文件
    out_file.write(fixed_content)

2. 正确加载修复后的文件

注意:.jsonl格式是每行一个独立的JSON对象,直接用json.load()加载整个文件会报错(除非文件本身是一个完整的JSON数组)。根据你的数据情况,分两种加载方式:

方式A:如果修复后是完整的JSON数组

如果修复后的文件是一个包裹在[]里的完整数组(比如开头是[,结尾是],中间是用逗号分隔的对象),可以直接用json.load():

import json

with open('fixed_tweets_036.jsonl', 'r', encoding='utf-8') as json_file:
    data = json.load(json_file)

方式B:标准JSONL格式加载(推荐)

如果你的文件是标准JSONL(每行一个推文对象),应该逐行读取解析:

import json

data = []
with open('fixed_tweets_036.jsonl', 'r', encoding='utf-8') as json_file:
    for line in json_file:
        # 跳过空行,避免解析错误
        cleaned_line = line.strip()
        if cleaned_line:
            tweet = json.loads(cleaned_line)
            data.append(tweet)

为什么原来的代码会报错?

  • json.load()是用来解析单个JSON对象或数组的,而JSONL文件是多行独立JSON,直接加载会触发格式错误;
  • 加上文件本身存在][的语法错误,导致整个内容无法被解析为合法的JSON结构。

内容的提问来源于stack exchange,提问作者tezzaaa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:10:50