2010-10-14 11 views
5

Estoy escribiendo código que buscará en Twitter para las palabras clave y guardarlos en un diccionario de Python:que accede

 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 

El diccionario resultante es:

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 

¿Cómo puedo acceder al ' from_user 'y ¿cuál es la' u 'antes de la clave y el valor?

+0

'Contents' no es en realidad un diccionario. Es una lista que contiene un solo diccionario. – hughdbrown

Respuesta

11
result[0][u'from_user'] 

El u prefijo significa que es un unicode en lugar de un str.

1

Usted acceder al elemento ala

print Contents['from_user'] 

La 'U' en frente de la cadena indica que la cadena es uni-código.

+0

en realidad sería Contents [0] ['from_user'] como Ignacio tiene arriba ... Contents parece ser una lista de diccionarios basada en la pregunta. – Aaron

+0

Sí, no se dio cuenta de eso. – sizzzzlerz

0

nota de que en Python 3.x que no es necesario la 'U' antes de la cadena porque toda la cadena son objeto Unicode ...

esto se puede obtener también en Python 2.x, justo puso en la parte superior de su código

from __future__ import unicode_literals 
0

Dado que el artículo devuelto es una lista que contiene un diccionario que haría:

print Contents[0]['from_user'] 

la u es para unicode y no es necesario mencionar que cuando se acceso los datos. Python se ocupa de eso.

Dado que los datos devueltos en un diccionario en sí la declaración final sería

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