Python读取Twitter API导出的JSON文件提取text字段报错求助
解决提取Twitter推文text字段时的TypeError问题
我来帮你分析问题所在,以及怎么修复:
错误原因拆解
你遇到的TypeError主要有两个核心问题:
- 混淆了文件对象和解析后的JSON数据:你用
json_file['text'][0]来访问字段,但json_file是打开的文件对象,不是解析后的列表数据——真正存储推文列表的是你用json.load(json_file)加载到json_data里的变量。 - 索引顺序搞反了:即使你用对了变量,
json_data是一个字典组成的列表,所以得先取列表里的字典元素(比如用索引[0]拿第一条推文),再从字典里取'text'字段,而不是反过来写['text'][0]。
修正后的代码
这里提供两种常见的使用方式,你可以根据需求选择:
import json # 正确加载JSON数据到json_data(这是一个包含推文字典的列表) with open('981452637_tweetlist.json') as json_file: json_data = json.load(json_file) # 方式1:提取第一条推文的text内容 first_tweet_text = json_data[0]['text'] print(first_tweet_text) # 方式2:遍历所有推文,逐个提取text内容 for tweet in json_data: print(tweet['text'])
额外说明
json.load()会把JSON文件中的数组结构转换成Python的列表,每个数组元素对应一个推文字典,所以json_data的类型是list,每个元素是dict。- 当你尝试用字符串索引(比如
'text')去访问文件对象时,Python会报错,因为文件对象只接受整数索引(用来定位字节位置),这就是你看到TypeError: list indices must be integers, not str的核心原因。
内容的提问来源于stack exchange,提问作者Lily
相关产品推荐
相关产品推荐

