Как перебрать список, содержащий данные Twitter Stream? - PullRequest
0 голосов
/ 26 апреля 2018

Я передавал данные из твиттера с помощью tweepy Streaming api,

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()

Как можно сохранить твиты в списке и иметь возможность их перебирать?кто-то, пожалуйста, помогите!

1 Ответ

0 голосов
/ 26 апреля 2018

Ваш myStream объект - это не список, а генератор (который, в свою очередь, является итератором).Итераторы - это, в основном, итерируемые элементы (например, списки), элементы которых вычисляются (лениво) по одному: только тогда, когда они необходимы.Это гораздо более эффективная структура памяти, но длина не может быть вычислена.(Кроме того, вы также сможете итерировать их один раз).

TLDR : конвертируйте myStream в список: list(myStream) и все будет хорошо.

Подробнее о генераторах / итераторах см. здесь

...