python - 如何遍历包含 Twitter Stream 数据的列表?
问题描述
我正在使用 tweepy Streaming api 从 twitter 流式传输数据,
class MyStreamListener(tweepy.StreamListener):
def __init__(self):
super().__init__()
self.counter = 0
self.limit = 8
self.q=list()
def on_status(self, status):
self.counter += 1
if self.counter < self.limit:
self.q.append(status.user.name)
self.q.append(status.user.statuses_count)
#print(status.text)
else:
myStream.disconnect()
print(self.q)
在on_status
方法中,我已经存储了所有数据并status_count
在列表中,但是当我尝试迭代数据时,我无法这样做
enter code here
tweet_list=list()
tweet_list.append(myStream.filter(track=[p]))
#tweet_list=myStream.filter(track=[p])
print(len(myStream.filter(track=[p])))
我得到这个结果:
['Chanchinthar', 1063, 'Sourabh', 4424]
Traceback (most recent call last):
File "C:/Users/TharunReddy/Desktop/pothi/twitter.py", line 51, in <module>
print(len(myStream.filter(track=[p])))
TypeError: object of type 'NoneType' has no len()
如何将推文存储在列表中并能够对其进行迭代?有人请帮忙!
解决方案
您的myStream
对象不是一个列表,而是一个生成器(它又是一种迭代器)。迭代器基本上是可迭代的(如列表),其元素一次计算(惰性)一个:只需要一次。这是一种内存效率更高的结构,但无法计算长度。(此外,您还可以遍历它们一次)。
TLDR:将您的列表转换myStream
为列表:list(myStream)
一切都会好起来的。
有关生成器/迭代器的更多信息,请参见此处
推荐阅读
- tshark - tshark,收集所有数据包流量后重新创建发布请求
- lua - 从表中提取所有键和值
- flutter - 应该只有一项具有 [DropdownButton] 的值:
- swift - 将鼠标悬停在分隔符上时,是否可以在 NSSplitView 中暂时禁用鼠标光标更改?
- c# - 如何仅在软件更新时初始化新值?
- rust - 由于需求冲突,推断寿命失败
- python-3.x - 从特定字符串 Python 解码
- python - 机器人黑名单 Discord.py
- python - 创建可以通过“导入”重用的python对话框的正确方法是什么?
- python - 插入的记录未显示在 MS Access 数据库表中