2016-12-05 3 views
0
{u'contributors': None, u'truncated': False, u'text': u'@Kor3aYn @YouTube yeet', u'is_quote_status': False, u'in_reply_to_status_id': 805863281042878464L, u'id': 805864211544965122L, u'favorite_count': 0, u'source': u'<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>', u'retweeted': False, u'coordinates': None, u'timestamp_ms': u'1480967974922', u'entities': {u'user_mentions': [{u'id': 4249141216L, u'indices': [0, 8], u'id_str': u'4249141216', u'screen_name': u'Kor3aYn', u'name': u'YOUTUBE: Kor3aYn\U0001f1f0\U0001f1f7'}, {u'id': 10228272, u'indices': [9, 17], u'id_str': u'10228272', u'screen_name': u'YouTube', u'name': u'YouTube'}], u'symbols': [], u'hashtags': [], u'urls': []}, u'in_reply_to_screen_name': u'Kor3aYn', u'id_str': u'805864211544965122', u'display_text_range': [18, 22], u'retweet_count': 0, u'in_reply_to_user_id': 4249141216L, u'favorited': False, u'user': {u'follow_request_sent': None, u'profile_use_background_image': False, u'default_profile_image': False, u'id': 4858458939L, u'verified': False, u'profile_image_url_https': u'https://pbs.twimg.com/profile_images/728320215986114560/f12oxR9J_normal.jpg', u'profile_sidebar_fill_color': u'000000', u'profile_text_color': u'000000', u'followers_count': 148, u'profile_sidebar_border_color': u'000000', u'id_str': u'4858458939', u'profile_background_color': u'000000', u'listed_count': 0, u'profile_background_image_url_https': u'https://abs.twimg.com/images/themes/theme1/bg.png', u'utc_offset': None, u'statuses_count': 76, u'description': None, u'friends_count': 21, u'location': u'Nuk3town', u'profile_link_color': u'ABB8C2', u'profile_image_url': u'http://pbs.twimg.com/profile_images/728320215986114560/f12oxR9J_normal.jpg', u'following': None, u'geo_enabled': False, u'profile_banner_url': u'https://pbs.twimg.com/profile_banners/4858458939/1454015440', u'profile_background_image_url': u'http://abs.twimg.com/images/themes/theme1/bg.png', u'name': u'Smye', u'lang': u'en', u'profile_background_tile': False, u'favourites_count': 64, u'screen_name': u'i_Smye', u'notifications': None, u'url': None, u'created_at': u'Thu Jan 28 20:59:06 +0000 2016', u'contributors_enabled': False, u'time_zone': None, u'protected': False, u'default_profile': False, u'is_translator': False}, u'geo': None, u'in_reply_to_user_id_str': u'4249141216', u'lang': u'en', u'created_at': u'Mon Dec 05 19:59:34 +0000 2016', u'filter_level': u'low', u'in_reply_to_status_id_str': u'805863281042878464', u'place': None} 

У меня есть следующее в массиве, хранящемся как расшифрованное. Я пытаюсь получить ['id_str'], что является двумя вещами; идентификатор tweetID и идентификатор пользователя.Извлечение данных из словаря, если проверка

if ScreenName not in decoded['user']['screen_name']: #if your name is not in the json 
    if decoded['id_str'][1] == Twitter_ID: # lets say 4858458939 

Это то, что у меня есть, и я понимаю, что это не правильно. Я по существу пытаюсь получить автора твита, который, как мне кажется, хранится под вторым «str_id» и проверяет, является ли это == моей переменной Twitter_ID.

Пожалуйста, помогите мне в том, что делать. Thanks

+0

Что это связано с JSON? Данные, приведенные является нативная структура данных Python - если он * используется * быть JSON, прежде чем разобран это спорный вопрос; теперь это обычные данные Python. –

+0

Я изменил названия, спасибо. – smye

+0

@smye Это не массив (который представляет собой массив numpy). Эта структура - словарь в python. – rth

ответ

0

Самая большая проблема, которую я вижу, заключается в том, что decoded['id_str'] - это строка. Это означает, что decoded['id_str'][0] является символом в строке. Вы имеете в виду decoded['id_str'].

Если это не работает, как правило, для такого типа конверсии существует риск повреждения корпуса. Вы уверены, что сравниваете ints с ints? Попробуйте это:

repr(decoded['id_str']) 

Если вы видите u'<number>' (вы должны, на основе данных, предоставленных вами), то вы не имеете целого, поэтому сравнений целое число, не будет работать. Это не соответствует дизайну.

>>> unicode(2) == 2 
False 

Если это так, то вы можете бросить как часть вашего сравнения:

# Making sure that ScreenName is unicode to match encoding 
if unicode(ScreenName) not in decoded['user']['screen_name']: 
    # Making sure that twitter ID is an integer. 
    if int(decoded['id_str']) == Twitter_ID: 

Вы могли бы быть лучше использовать unicode(Twitter_ID), если вы не уверены, что всегда будет числовым.

+0

Да, это всегда сравнение int с int. print (int (decoded ['id_str'] [1])) Я получаю значение 0, поэтому проверка if завершается Я уверен, что это способ проверить владельца твита. – smye

Смежные вопросы