Python实现Twitter推文列表清洗生成k1_tweets_processed列表及报错解决
报错根因
- 循环取值逻辑偏差:遍历列表
k1_tweets_filtered时,直接迭代得到的循环变量是列表内部存储的单条推文字典,并非整数类型的索引。原代码用字典类型的循环变量作为列表下标取值,直接触发TypeError: list indices must be integers or slices, not dict。 - 处理结果未持久化:调用
pre_process函数后,没有接收函数返回的处理后文本,也没有将处理结果追加到目标列表k1_tweets_processed中,即使解决类型报错,最终目标列表也会保持空值。
可运行的正确实现
基础循环版本
k1_tweets_processed = [] # 直接迭代拿到每一条推文字典,无需额外获取列表索引 for tweet in k1_tweets_filtered: raw_text = tweet['text'] processed_text = pre_process(raw_text) k1_tweets_processed.append(processed_text)
简洁列表推导式版本
k1_tweets_processed = [pre_process(tweet['text']) for tweet in k1_tweets_filtered]
注意:由于Python字符串为不可变类型,
pre_process函数必然是通过返回值传递处理后的文本,不存在原地修改原字符串的可能,必须显式接收函数返回值再存入目标列表。
内容的提问来源于stack exchange,提问作者Drazic
相关产品推荐
相关产品推荐

