2011-01-15 20 views
7

Soy nuevo en Python y JSON, por lo que lo siento si no tengo idea. Estoy recibiendo el siguiente resultado de la API de Google Translate y quieren analizar el valor de "translatedText":Obtenga el valor del elemento JSON específico en Python

{ 
"data": { 
    "translations": [ 
    { 
    "translatedText": "Toute votre base sont appartiennent à nous" 
    } 
    ] 
} 
} 

Esta respuesta simplemente se almacena como una cadena utilizando la siguiente:

response = urllib2.urlopen(translateUrl) 
translateResponse = response.read() 

Así Sí, todo lo que quiero hacer es obtener el texto traducido y almacenarlo en una variable. He buscado en Python Docs, pero parece muy confuso y no parece considerar JSON almacenado como una cadena simple en lugar de un objeto JSON súper genial.

+3

En aras de la mejora de la documentación: ¿Ha encontrado el módulo 'json' en la documentación? ¿Encontró la sección "Uso básico"? ¿Qué hay acerca de la descripción de "volcados" y "cargas" que le dio la impresión de que los documentos "no parecen considerar JSON almacenado como una cadena simple en lugar de un objeto JSON súper genial"? ¿Hubiera sido más útil si los ejemplos se incluyesen con cada definición de función en lugar de incluirlos en un gran grupo en la parte frontal? –

+1

Bueno, soy nuevo en los documentos de Python en general, así que no tengo claro cómo se describen las cosas. En los documentos de PHP/Java, las funciones parecen estar claramente organizadas y definidas, pero probablemente sea justo a lo que estoy acostumbrado. También sí, creo que sería mejor si los ejemplos se proporcionaran con las funciones en lugar de al principio, porque no está claro qué es lo que realmente están haciendo hasta que lea adelante. Ahora puedo ver lo que hace la función de cargas, pero cuando estaba escaneando antes parecía que estaba tomando un formato especial en lugar de una cadena con formato JSON. – Matt

Respuesta

12

Puede analizar el texto en un objeto utilizando el módulo json en Python> = 2.6:

>>> import json 
>>> translation = json.loads("""{ 
... "data": { 
... "translations": [ 
... { 
...  "translatedText": "Toute votre base sont appartiennent nous" 
... }, 
... { 
...  "translate": "¡Qué bien!" 
... } 
... ] 
... } 
... } 
... """) 
>>> translation 
{u'data': {u'translations': [{u'translatedText': u'Toute votre base sont appartiennent nous'}]}} 
>>> translation[u'data'][u'translations'][0][u'translatedText'] 
u'Toute votre base sont appartiennent nous' 
>>> translation[u'data'][u'translations'][1][u'translate'] 
u'¡Qué bien!' 
+0

Si tienes python <= 2.6 puedes usar el paquete simplejson. Es lo mismo que json, pero no en la biblioteca estándar de Python. – ikostia

+0

su respuesta fue exactamente lo que estaba buscando ... gracias – akki

+0

y sí, considere las modificaciones que he sugerido ... aclaran algunas dudas que aún tenía después de leer su respuesta – akki

Cuestiones relacionadas