2013-05-26 6 views
3

Я тоже новичок в Python и JSON. Я установил twython, чтобы «говорить» с API Twitter. Я использую Python 2.7 на Mac.JSON или SimpleJSON и Python с Twython

Я хотел бы получить мои упоминания через API. Программа должна идентифицировать пользователя Twitter, который упомянул меня.

Стараюсь:

t = Twython(...) 
men = t.get_mentions_timeline() 

Пользователь упоминается один раз, печать мужчины показывает много вещей, как это:

[{u'contributors': None, u'truncated': False, u'text': .... u'Sun May 26 09:18:55 +0000 2013', u'in_reply_to_status_id_str': None, u'place': None}] 

Где-то в этом материале я вижу все, что я хотел бы извлечение из ответа.

Как я могу извлечь screen_name?

Я совершенно смущен json.dumps или json.loads - должен ли я работать с json или simplejson?

+0

у меня есть решение - только один для: для упоминания в мужчинах: \t мю = говоря [ «пользователь»] \t \t tweetid = говоря [ 'идентификатор'] \t usern = мю [ 'screen_name'] \t печати tweetid \t печати usern – hildwin

ответ

2

Вам не нужно использовать json (или simplejson, которая является той же самой библиотекой, которая была переименована в комплекте с Python); библиотека Twython уже расшифровала все, что от JSON для вас.

У вас есть список из API, каждая запись - dict; каждый такой словарь является Tweet. Вы можете видеть, что содержится в Twitter API documentation. Перебирайте этот список; некоторые элементы словари или списки сами:

for mention in men: 
    print mention['user']['screen_name'] 
    if mention['contributors']: 
     print [con['screen_name'] for con in mention['contributors']] 

Чтобы выяснить полную структуру, использовать pprint.pprint() для печати структурированной версии:

import pprint 

pprint.pprint(men) 

, который сделает его более легким для вас, чтобы выяснить, что вы можете перебираем и т.д.

+0

Спасибо, но я получаю сообщение об ошибке: исключение KeyError: 'screen_name' , возможно, я должен отметить, что screen_name является частью субъектов выглядит следующим образом: u'entities ': {u'symbols': [], \t u'user_mentions ': [{u'id': 1457484992, \t u'indices' : [0, 8], \t u'id_str ': u'1457484992', \t u'screen_name ': u'CyclopT', .... – hildwin

+0

@hildwin: У меня была ошибка в более раннем редактировании; можете ли вы сказать мне, что вы использовали? Используйте трюк 'pprint', чтобы выяснить, что такое список и что такое словарь. –

+0

Второй цикл не будет работать.Структура: 'u'user ': {u'screen_name': u'NAME» (больше материала) } ' – hildwin