У вас есть несколько вариантов здесь, вы можете проверить, существует ли ключ, или использовать некоторые попытки / исключения.
Проверьте, существует ли ключ:
Вы можете сделать это, потому что tweepy возвращает объект состояния, который действует аналогично файлу json или словарю python, и, таким образом, у вас по существу есть пара ключ: значение. Вы должны быть в состоянии использовать (исходя из кода выше)
if 'extended_entities' in tweet:
tweet_record['media_url'] = tweet.extended_entities.media_url
конечно, возможно и обратное
if 'extended_entities' not in tweet:
#whatever you want to do
Это может привести к проблемам, но что, если extended_entities существует, но по какой-то причине media_url нет? А что, если вы хотите получить еще больше из этого (не для объекта статуса, но, эй, я просто пытаюсь доказать здесь будущее!) Вам придется делать длинные или многократные операторы if, который не будет выглядеть лучше
if 'extended_entities' in tweet:
if 'media_url' in tweet['extended_entities']
#etc
так что может быть проще просто бросить его в попытке, кроме ...
try:
tweet_record['media_url'] = tweet.extended_entities.media_url
except AttributeError:
#etc
это означает, что программа не выдаст ошибку, если определенные элементы не найдены. AttributeError предназначен для доступа к неверному атрибуту объекта. Вы, конечно, можете изменить порядок для удобства чтения. Имейте в виду, однако, что при этом это pythonic , это может быть немного трудно читать, если использовать слишком часто, по моему мнению.
Я упоминал этот вопрос , когда искал вещи для этого ответа. Дает хорошие идеи для такого рода вещей, если вам нужна дополнительная помощь.
Надеюсь, это поможет.