Estoy intentando obtener las definiciones de ciertas palabras usando este código:
import requests
url = requests.get("https://api.dictionaryapi.dev/api/v2/entries/en_US/fish")
a = url.text()
print(a)
El enlace en el fragmento de código anterior devuelve algunos valores como este:
[{"word":"fish","phonetics":[{"text":"/fɪʃ/","audio":"https://lex-audio.useremarkable.com/mp3/fish_us_1.mp3"}],"meanings":[{"partOfSpeech":"noun","definitions":[{"definition":"A limbless cold-blooded vertebrate animal with gills and fins and living wholly in water.","example":"the sea is thick with fish"}]},{"partOfSpeech":"intransitive verb","definitions":[{"definition":"Catch or try to catch fish, typically by using a net or hook and line.","synonyms":["go fishing","angle","cast","trawl"],"example":"he was fishing for bluefish"}]}]},{"word":"fish","phonetics":[{"text":"/fɪʃ/","audio":"https://lex-audio.useremarkable.com/mp3/fish_us_1.mp3"}],"meanings":[{"partOfSpeech":"transitive verb","definitions":[{"definition":"Mend or strengthen (a beam, joint, mast, etc.) with a fish."}]},{"partOfSpeech":"noun","definitions":[{"definition":"A flat plate of metal, wood, or another material that is fixed on a beam or across a joint in order to give additional strength, especially on a ship's damaged mast or spar as a temporary repair."}]}]}]
Ahora quiero obtener la primera definición del resultado anterior. ¿Cómo lo consigo?
¿Cuáles son sus parámetros de búsqueda?
- Nick
28 de marzo de 2021 a las 5:39
¿Quieres obtener todas las definiciones o sólo la primera?
Marcos
28 de marzo de 2021 a las 5:41
@deadshot: una lista de dictados es una lista.
Usuario2357112
28 de marzo de 2021 a las 5:42
" ¿Hay alguna forma de buscar valores específicos en todo el diccionario a la vez? de ninguna manera
- tiro muerto
28 de marzo de 2021 a las 5:42
solo el primero
Murkut23
28 de marzo de 2021 a las 5:43
------------------------------------
Los documentos JSON complejos y las consultas a dichos documentos plantean un problema similar al de la manipulación de documentos XML; Se puede utilizar un conjunto personalizado de listas por comprensión y funciones de utilidad, pero se debe utilizar una herramienta especializada.
Para manipular documentos JSON en Python, puedes echar un vistazo a jsonpath_ng:
Los elementos que desea extraer se definen mediante una expresión JSONPath.sion, el equivalente de XPath de XML
Simplemente agregue/actualice su(s) expresión(es) JSONPath para extraer más elementos/nuevos
En el siguiente ejemplo, las expresiones JSONPath definidas en QUERIES se ejecutan una por una en su documento JSON:
import requests
import jsonpath_ng
import json
URL = 'https://api.dictionaryapi.dev/api/v2/entries/en_US/fish'
QUERIES = {
'First kind, first meaning, first definition': jsonpath_ng.parse('[0].meanings[0].definitions[0].definition'),
'All kind, first definitions': jsonpath_ng.parse('[*].meanings[0].definitions[0].definition'),
'All definitions': jsonpath_ng.parse('[*].meanings[*].definitions[*].definition')
}
if __name__ == '__main__':
jsdata = requests.get(URL).json()
for name, query in QUERIES.items():
print(f'--- {name} ---')
for match in query.find(jsdata):
print(json.dumps(match.value, indent=2))
print()
------------------------------------
prueba esto.
s = [...]
for i in s:
print(i['word'],[ k['definition'] for j in i['meanings'] for k in j['definitions']])
2
Esto devuelve todas las definiciones. quierot para obtener exactamente esto: ['Un animal vertebrado de sangre fría, sin extremidades, con branquias y aletas y que vive completamente en el agua.', 'Pescar o intentar pescar, generalmente usando una red o anzuelo y sedal.'], que es la primera definición.
Murkut23
28 de marzo de 2021 a las 6:02
¿Te gusta esto? ` print(s[0]['palabra'],[ k['definición'] para j en s[0]['significados'] para k en j['definiciones']])`
- e_yi
28 de marzo de 2021 a las 9:07