我使用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()
如何将推文存储在列表中并能够迭代它? 有人请帮忙!
答案 0 :(得分:0)
您的myStream
对象不是列表而是生成器(它又是一种迭代器)。迭代器基本上是迭代(如列表),其元素一次一个地计算(懒惰):只需要一次。这是一种内存效率更高的结构,但无法计算长度。 (此外,您还可以迭代一次)。
TLDR :将您的myStream
转换为列表:list(myStream)
,一切都会好的。
有关生成器/迭代器的更多信息,请参阅here