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

导入Twitter数据至Pandas时如何跳过AttributeError错误

解决AttributeError: 'int' object has no attribute 'items'问题

嘿,我来帮你搞定这个问题!首先咱们得揪出错误的根源:

你遇到的AttributeError其实不是在这段加载代码里触发的,而是后续处理tweet_data列表元素时出的问题——你当前的代码用了裸except跳过了解析错误,但有些行虽然能被json.loads成功解析,结果却不是推文该有的字典(dict)类型,而是整数(int)。比如文件里可能混了单独的数字行(比如"123"),或者损坏的JSON字符串解析后意外变成了int,当你后续对这些int类型的元素调用.items()方法(比如遍历键值对)时,就会触发这个错误。

修复方案

我给你调整下代码,既能过滤无效条目,又能更精准地排查问题:

import json

raw_data_path = input("Enter the path for raw data file: ")
tweet_data = []

# 用with语句自动管理文件,避免资源泄漏
with open(raw_data_path, "r", encoding="utf-8") as tweets_file:
    for line_num, line in enumerate(tweets_file, 1):
        line = line.strip()
        if not line:  # 跳过空行
            continue
        try:
            tweet = json.loads(line)
            # 只保留字典类型的条目(推文应该是JSON对象,对应Python的dict)
            if isinstance(tweet, dict):
                tweet_data.append(tweet)
            else:
                print(f"第{line_num}行:跳过非字典类型条目 - {line}")
        except json.JSONDecodeError as e:
            # 只捕获JSON解析错误,避免隐藏其他异常
            print(f"第{line_num}行:JSON解析失败 - {str(e)}")
            continue

关键改进点:

  • 替换裸except为json.JSONDecodeError:只会捕获JSON解析相关的错误,不会掩盖其他潜在问题(比如文件读取错误)。
  • 添加类型检查:确保只有字典类型的有效推文被加入列表,从根源避免后续处理时的AttributeError。
  • 记录行号:方便你定位原始文件里的错误行,后续可以针对性修复数据。
  • 用with语句管理文件:自动帮你关闭文件,代码更安全规范。

这样调整后,tweet_data里就只会存有效的推文字典,后续调用.items()之类的方法就不会再报错啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:03:49