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

读取Twitter导出的JSON格式TXT文件时遇JSONDecodeError求助

解决Twitter JSON文件加载时的JSONDecodeError问题

嘿,我一眼就看出问题所在了——你的Twitter数据文件采用的是**JSON Lines(每行一个独立JSON对象)**格式,而不是标准的单个JSON数组结构。当你用json.loads()读取整个文件的字符串内容时,多个独立的JSON对象连在一起,不符合JSON的语法规范,所以解析器会抛出"Extra data"的错误。

问题根源拆解

从你给出的文件示例能看到,每一行都是一个完整的推文JSON对象,但整个文件并没有被方括号[]包裹成数组。json.loads()只能解析单个JSON对象或者一个完整的JSON数组,当它读完第一行的JSON后,遇到第二行开头的{,就会判定这是多余的数据,直接报错。

两种靠谱的解决方案

方案1:逐行读取并解析(手动控制更灵活)

你可以逐行读取文件,每行单独解析成JSON对象,再把这些对象收集起来转换成DataFrame:

import json
import pandas as pd

tweets_list = []
file_path = files_path + '/tweets.json.2019-01-15.txt'

with open(file_path, 'r', encoding='utf-8') as f:
    for line in f:
        # 跳过可能存在的空行
        cleaned_line = line.strip()
        if not cleaned_line:
            continue
        # 解析单行JSON
        tweet_obj = json.loads(cleaned_line)
        tweets_list.append(tweet_obj)

# 转换成DataFrame
tweet_df = pd.DataFrame(tweets_list)
print(tweet_df.head())

方案2:用pandas直接读取(更简洁高效)

pandas原生支持JSON Lines格式的文件,只需要给read_json()加上lines=True参数就行,一行代码搞定:

import pandas as pd

tweet_df = pd.read_json(files_path+'/tweets.json.2019-01-15.txt', lines=True)
print(tweet_df.head())

额外小技巧:处理格式错误的行

如果你的文件里有少数格式错误的行(比如残缺的JSON),可以加个异常处理跳过这些行,避免程序直接崩溃:

import json
import pandas as pd

tweets_list = []
file_path = files_path + '/tweets.json.2019-01-15.txt'

with open(file_path, 'r', encoding='utf-8') as f:
    for line_num, line in enumerate(f, start=1):
        cleaned_line = line.strip()
        if not cleaned_line:
            continue
        try:
            tweet_obj = json.loads(cleaned_line)
            tweets_list.append(tweet_obj)
        except json.JSONDecodeError as e:
            print(f"警告:第{line_num}行解析失败,错误信息:{e},已跳过该行")

tweet_df = pd.DataFrame(tweets_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:36:46