Cómo analizar un valor de clave anidada en otra de las claves cuyo nombre no se sabe en Python?

votos
29

Me gustaría tener acceso al valor de la clave de extracto que se anida en las páginas clave

{
    batchcomplete: ,
    query: {
        normalized: [
            {
                from: sample,
                to: Sample
            }
        ],
        pages: {
            23895873: {
                pageid: 23895873,
                ns: 0,
                title: Sample,
                extract: <p><b>Sample</b> or <b>samples</b> may refer to:</p>\n<p></p>\n
            }
        }
    }
}

Estoy creando un bot Wikipedia que imprimirá el resumen (valor de la clave extract). Pero el problema es que el pageidvalor se va modificando con el resultado de la búsqueda. ¿Cómo puedo hacer esto?

He intentado utilizar JSON:

import json
import requests
wikiReq = requests.get(https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro=&titles=sample&format=json)
jsonResult = wikiReq.json()
result = jsonResult[query][pages][][extract]
print(json.dumps(result , indent = 4))
Publicado el 28/03/2016 a las 13:59
por usuario
En otros idiomas...                            


1 respuestas

votos
1

Tu puedes hacer

for i in jsonResult["query"]["pages"]:
    result = jsonResult["query"]["pages"][i]["extract"]

Suponiendo que no es sólo un elemento en el que hay siempre funcionará

Respondida el 28/03/2016 a las 14:03
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more