导入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
相关产品推荐
相关产品推荐

