Peticiones de Python – extrayendo datos de response.text

He estado mirando alrededor por unos días ahora y no puedo resolver esto. Básicamente, estoy cargando una imagen en un servidor y obtengo una ID a cambio, el problema es que no puedo averiguar cómo extraer esta ID y cambiarla en una Cadena lista para guardarla en una base de datos.

Código de progtwig

url =  with open("image.jpg", "rb") as image_file: files = {'file': image_file} auth = ('', '') r = requests.post(url, files=files, auth=auth) data = r.json() uploaded = data.get('uploaded') content_id = uploaded[0] print r print r.text print '--------------' print str(content_id) 

Y aquí está la salida que obtengo.

  { "status": "success", "uploaded": [ { "filename": "image.jpg", "id": "6476edfa1d262ad81181d992da78149d" } ] } -------------- {u'id': u'6476edfa1d262ad81181d992da78149d', u'filename': u'image.jpg'} 

Usted está recibiendo JSON; ya usaste el método response.json() para decodificar eso a una estructura de Python:

 data = r.json() 

Puede tratar los data['uploaded'] como cualquier otra lista de Python; el contenido es solo un diccionario, así que otra clave del diccionario para obtener el valor de id :

 data['uploaded'][0]['id'] 

Es seguro codificar el índice a [0] aquí, ya que sabe cuántas imágenes ha cargado.

Podría usar el manejo de excepciones para detectar si se devolvió algo inesperado:

 try: image_id = data['uploaded'][0]['id'] except (IndexError, KeyError): # key or index is missing, handle an unexpected response log.error('Unexpected response after uploading image, got %r', data) 

o usted podría manejar los data['status'] ; todo depende de la semántica exacta de la API que está utilizando aquí.