Python读取Twitter历史JSON文件时出现UnicodeDecodeError报错求助
解决Twitter导出
tweet.js的UnicodeDecodeError问题 嘿,我之前也碰到过完全一样的问题!你遇到的UnicodeDecodeError根源很简单:Python默认会用系统的默认编码(Windows上就是cp1252)去读取文件,但Twitter导出的tweet.js是UTF-8编码的,里面包含了emoji这类cp1252无法识别的特殊字符,自然就解码失败了。
另外还要给你提个隐藏坑:Twitter导出的tweet.js其实不是标准JSON文件——它开头会有一段window.YTD.tweet.part0 = 的前缀代码,就算解决了编码问题,直接用json.load()读取还是会报JSON解析错误,得一起处理掉。
给你个修复后的完整代码:
import json with open('tweet.js', 'r', encoding='utf-8') as json_file: # 先读取全部内容,剥离开头的非JSON前缀 raw_content = json_file.read() # 定位纯JSON数据的起始和结束位置 start_pos = raw_content.find('{') end_pos = raw_content.rfind('}') + 1 clean_json = raw_content[start_pos:end_pos] # 解析JSON数据 tweet_data = json.loads(clean_json) print(tweet_data)
两个关键修复点:
- 打开文件时明确指定
encoding='utf-8',确保能正确解码包含emoji、特殊符号的推文内容 - 移除Twitter额外添加的前缀代码,只保留标准的JSON结构部分,让
json.loads()可以正常解析
这样运行之后应该就能顺利加载你的推文数据,接下来就可以尽情做数据分析啦!
内容的提问来源于stack exchange,提问作者miatech
相关产品推荐
相关产品推荐

