deve87 Skrevet 12. januar 2020 Skrevet 12. januar 2020 (endret) Hei. Ikke vært borte i python før, men prøver altså å få noe verdier utifra python-yr Følgende kode under gir meg trykk i hpa time for time. from yr.libyr import Yr import json weather = Yr(location_name='Norway/Telemark/Skien/Skien', forecast_link='forecast_hour_by_hour') for forecast in weather.forecast(str): data = json.loads(forecast) pressure = data['pressure'] hele = pressure['@value'] print(hele) Det er sikkert bedre måter enn å blande inn JSON, men koden gir meg følgende: 1005.8 1006.4 1006.6 1006.8 1006.9 1007.2 1007.5 1007.8 1008.1 1008.4 1008.4 1008.6 1008.9 1009.0 1008.8 1008.6 1008.3 1008.4 1008.1 1007.8 1007.3 1006.5 1006.2 1005.3 1004.3 1003.2 1001.8 1000.5 998.8 997.4 995.2 993.1 991.5 989.9 989.3 989.4 989.6 990.3 991.1 991.8 992.6 993.4 994.1 995.0 995.4 995.3 995.3 995.3 Hvordan gripe en og en rad? split() gir meg samme "rad" visning. Endret 12. januar 2020 av deve87 Siter
Moskus Skrevet 12. januar 2020 Skrevet 12. januar 2020 1 minutt siden, deve87 skrev: Hvordan gripe en og en rad? "hele" er vel en array med verdier. Du kan iterere det gjennom en rekke med en for-løkke. Hva skal du oppnå? Siter
deve87 Skrevet 12. januar 2020 Forfatter Skrevet 12. januar 2020 (endret) 10 minutter siden, Moskus skrev: "hele" er vel en array med verdier. Du kan iterere det gjennom en rekke med en for-løkke. Hva skal du oppnå? "hele" er verdier for 48 timer fram i tid med trykk ute hpa. Håper er å gripe rad for rad slik at: rad1 = trykk nå rad2 = trykk om 1 time rad3 = trykk om 2 timer osv. deretter sende det til domoticz via json (denne biten er OK) Før jeg henter @value i pressure, kommer det opp 48 slike ved print av forecast { "@from": "2020-01-14T21:00:00", "@to": "2020-01-14T22:00:00", "symbol": { "@number": "4", "@numberEx": "4", "@name": "Cloudy", "@var": "04" }, "precipitation": { "@value": "0" }, "windDirection": { "@deg": "173.4", "@code": "S", "@name": "South" }, "windSpeed": { "@mps": "1.6", "@name": "Light breeze" }, "temperature": { "@unit": "celsius", "@value": "2" }, "pressure": { "@unit": "hPa", "@value": "995.3" } } Endret 12. januar 2020 av deve87 Siter
Moskus Skrevet 13. januar 2020 Skrevet 13. januar 2020 Det jeg mente var noe á la dette: https://www.geeksforgeeks.org/iterate-over-a-list-in-python/ Siter
deve87 Skrevet 14. januar 2020 Forfatter Skrevet 14. januar 2020 Ved å se nærmere på libyr.py Så det ut som at data ble generert ved brukt av "yield" Så ved å ha med ' '.join(forecast) var det mulig å benytte slice for stringen eks [45:-5500] før [pressure], [@value] blir hentet. Slik at en derifra kan hente riktig rad utifra den og den timen. Siter
deve87 Skrevet 14. januar 2020 Forfatter Skrevet 14. januar 2020 På 13.1.2020 den 8.33, Moskus skrev: Det jeg mente var noe á la dette: https://www.geeksforgeeks.org/iterate-over-a-list-in-python/ Ja, hadde prøvd det. Men den genererte bare 100 rader med hvert tall. Slik at 1003.4 ble 1 0 0 3 . 4 Men ved bruk av join() ble det mer riktig ? Siter
deve87 Skrevet 15. januar 2020 Forfatter Skrevet 15. januar 2020 (endret) Etter litt tid, ble det ferdige oppsettet litt andelenes. Var egentlig lurest å hente data utifra tiden for hver array fra json. Ved neste time, plusses bare 1 time på den eksisterende timen osv.. def weather_data(): #værdata denne timen starter her Yr(location_name='Norway/Telemark/Skien/Skien', forecast_link='forecast_hour_by_hour') for forecast in weather.forecast(hex): tn = time.strftime("%d""T""%H") jsondata = json.loads(forecast) data = jsondata["@from"] regn = jsondata["precipitation"]["@value"] trykk = jsondata["pressure"]["@value"] temp = jsondata["temperature"]["@value"] if tn in data: print("Temp nå: " + temp,"°C") print("Trykk nå: " + trykk,"hpa") print("Regn nå: " + regn,"mm") print('\n') return weather_data() Endret 16. januar 2020 av deve87 3 Siter
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.