ошибка в python для поисковых твитов для получения данных - PullRequest
1 голос
/ 10 июля 2020

по какой-то причине я получаю эту ошибку:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-27-0cd9472f8df9> in <module>()
----> 1 [print(tweet.user_mentions[0].get('id')) for tweet in tweets]

<ipython-input-27-0cd9472f8df9> in <listcomp>(.0)
----> 1 [print(tweet.user_mentions[0].get('id')) for tweet in tweets]

IndexError: list index out of range

Я использую пакет searchtweets, и это код, который я использую для получения идентификатора упоминания пользователя:

 for tweet in tweets: 
  print(tweet.user_mentions[0].get('id'))

Он дает мне дату, пока не будет нулевое значение

169686021
18120497
482708367
18120497
2227281840
482708367
33333620
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-15-7f6c50e8ab0b> in <module>()
      1 for tweet in tweets:
----> 2   print(tweet.user_mentions[0].get('id'))

IndexError: list index out of range

Есть идеи?

Заранее спасибо

1 Ответ

3 голосов
/ 10 июля 2020

Ваш l oop захватывает первую запись в объекте списка user_mention. Бегло взглянув на документацию, я не вижу никаких требований, чтобы user_mention что-либо содержало. Фактически, вам повезет до того, как он найдет пустое.

Чтобы получить первое упоминание, если оно существует, измените свой l oop на:

for tweet in tweets: 
  # if the user_mentions list is not empty, print the id of the first entry
  if tweet.user_mentions:
    print(tweet.user_mentions[0].get('id'))

Примечание: это способ "pythoni c" проверить, пуст ли список. Вы также можете написать это как if len(tweet.user_mentions) > 0:, хотя это часто приводит к ошибкам линтинга.

...