2010-10-14 6 views
5

Je suis d'écrire du code qui recherche twitter pour les mots clés et les stocker dans un dictionnaire python:Accéder python dictionnaire

 base_url = 'http://search.twitter.com/search.json?rpp=100&q=4sq.com/' 
     query = '7bOHRP' 
     url_string = base_url + query 
     logging.info("url string = " + url_string) 
     json_text = fetch(url_string) 
     json_response = simplejson.loads(json_text.content)            
     result = json_response['results'] 
     print "Contents" 
     print result 

Le dictionnaire qui en résulte est:

Contents[{ 
    u 'iso_language_code': u 'en', 
    u 'text': u "I'm at Cafe en Seine (40 Dawson Street, Dublin) w/ 2 others. http://4sq.com/7bOHRP", 
    u 'created_at': u 'Wed, 06 Oct 2010 23:37:02 +0000', 
    u 'profile_image_url': u 'http://a1.twimg.com/profile_images/573130785/twitterProfilePhoto_normal.jpg', 
    u 'source': u '<a href="http://foursquare.com" rel="nofollow">foursquare</a>', 
    u 'place': { 
     u 'type': u 'neighborhood', 
     u 'id': u '898cf727ca504e96', 
     u 'full_name': u 'Mansion House B, Dublin' 
    }, 
    u 'from_user': u 'pkerssemakers', 
    u 'from_user_id': 60241195, 
    u 'to_user_id': None, 
    u 'geo': None, 
    u 'id': 26597357992, 
    u 'metadata': { 
     u 'result_type': u 'recent' 
    } 
}] 
Status: 200 OK 
Content - Type: text/html;charset = utf - 8 
Cache - Control: no - cache 
Expires: Fri, 01 Jan 1990 00: 00: 00 GMT 
Content - Length: 0 

Comment puis-je accéder à la ' from_user 'et quel est le' u 'avant la clé et la valeur?

+0

'Contents' est pas vraiment un dictionnaire. C'est une liste qui contient un seul dictionnaire. – hughdbrown

Répondre

11
result[0][u'from_user'] 

Le préfixe u signifie qu'il est un unicode au lieu d'un str.

1

Vous accédez à l'article ala

print Contents['from_user'] 

Le 'u' en face de la chaîne indique que la chaîne est uni-code.

+0

il serait en fait Contents [0] ['from_user'] comme Ignacio a plus haut ... Le contenu semble être une liste de dictionnaires basés sur la question posée. – Aaron

+0

Yup, n'a pas remarqué cela. – sizzzzlerz

0

Notez que 3.x Python vous n'avez pas besoin « u » avant la chaîne parce que toute la chaîne sont objet unicode ...

cela peut également être obtenu en Python 2.x, juste mettre en haut de votre code

from __future__ import unicode_literals 
0

Depuis l'article retourné est une liste contenant un dictionnaire que vous feriez:

print Contents[0]['from_user'] 

U est pour unicode et vous n'avez pas besoin de mentionner que lorsque vous accès les données. Python s'en occupe.

Puisque les données renvoyées est dans un dictionnaire lui-même la déclaration finale serait

print result['Contents'][0]['from_user']