[Python-es] [Consulta] Sobre keyerror

Sebastián Arancibia ciberseba en gmail.com
Jue Jul 2 18:55:51 EDT 2020


Hola,

En efecto el error es porque no encuentra la key en el diccionario. De
hecho hice un print de la variable que obtienes tras llamar a la API, y al
no tener un API KEY válido no viene el elemento "main" dentro del
diccionario.

Este es el json de respuesta convertido a diccionario: {'cod': 401,
'message': 'Invalid API key. Please see
http://openweathermap.org/faq#error401 for more info.'}
Fíjate que si viene el cod (y por eso no se cae en esa línea), pero no
viene nada mas, lo que haría yo en ese if es validar respuestas distintas a
200.

Raro si, que me creé una cuenta para usar la API, y no me funciona la API
KEY. Debe estar desactualizado el tutorial.

Saludos.

On Thu, Jul 2, 2020 at 6:30 PM Lemarchand Barker <lemarchand8679 en gmail.com>
wrote:

> Hola, este es mi código:
>
> import requests
> import json
>
> api_key = "API_KEY"
>
> url = "http://api.openweathermap.org/data/2.5/weather?q=sp"
>
> nombre_ciudad = input("Ingrese nombre de la ciudad: ")
>
> complete_url = url + "appid=" + api_key + "&q=sp" + nombre_ciudad
>
> response = requests.get(complete_url)
>
> x = response.json()
>
> if x["cod"] != "404":
>
>     y = x["main"]
>
>     temperatura_actual = y["temp"]
>
>     celsius = temperatura_actual - 273.15
>
>     presion_actual = y["pressure"]
>
>     humedad_actual = y["humidity"]
>
>     z = x["clima"]
>
>     descripcion = z[0]["descripcion"]
>
>     print(f"Temperatura: {celsius}°")
>     print(f"Presión atmosférica: {presion_actual} hPa")
>     print(f"Humedad: {humedad_actual} %")
>     print(f"Descripción: {descripcion}")
>
> else:
>     print("Ciudad no encontrada")
>
> La salida es la siguiente:
>
> /usr/bin/python3.8 /home/raiden/Programacion/weather/weather.py
> Ingrese nombre de la ciudad: Rosario
> Traceback (most recent call last):
>   File "/home/raiden/Programacion/weather/weather.py", line 18, in <module>
>     y = x["main"]
> KeyError: 'main'
>
> El código original es este:
> Python-find-current-weather-of-any-city-using-openweathermap-api/
> <https://www.geeksforgeeks.org/python-find-current-weather-of-any-city-using-openweathermap-api/>
>
> Saludos y gracias
>
>
> El jue., 2 jul. 2020 a las 18:20, Gerardo Diez (<
> gerardo.diez.garcia en gmail.com>) escribió:
> >
> > Hola,
> >
> > No soy precisamente un experto, pero yo normalmente voy poniendo prints
> /liga por todos lados para que me vaya mostrando el contenido de las
> cadenas.
> >
> > No recuerdo muy bien el funcionamiento de input pero puede ser que el
> string que se esté incorporando lleve un salto de línea final ( \n)?
> >
> > Si es así mira la función strip
> >
> > Un saludo
> >
> > El jue., 2 jul. 2020 22:01, lemarchand8679 <lemarchand8679 en gmail.com>
> escribió:
> >>
> >> Hola, había escrito para comentar que había solucionado el
> inconveniente de KeyError, y es cierto en parte. Digo en parte porque si
> escribo desde 0 para hacer algunas modificaciones, me tira ese error al
> introducir una ciudad, y si hago un copy-paste del código funciona y la
> verdad no se por qué, alguna idea? Gracias
> >>
> >>
> >>
> >> Enviado desde mi smartphone Samsung Galaxy.
> >>
> >> _______________________________________________
> >> Python-es mailing list
> >> Python-es en python.org
> >> https://mail.python.org/mailman/listinfo/python-es
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > https://mail.python.org/mailman/listinfo/python-es
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200702/ec0fda15/attachment.html>


Más información sobre la lista de distribución Python-es