Hallo: Fortschritte machen, aber immer noch kämpfen. Ich habe folgendes json:Python übergibt variable Daten an Funktion
json =
{
"emeter": {
"get_daystat": {
"day_list": [
{ "year": 2016, "month": 10, "day": 1, "energy": 0.651000 },
{ "year": 2016, "month": 10, "day": 2, "energy": 0.349000 },
{ "year": 2016, "month": 10, "day": 3, "energy": 0.481000 }
],
"err_code": 0
}
}
}
ich eine lineare Suche bin mit dem Energiewert von einem bestimmten Tag mit dieser Funktion zu finden:
parsed_json = json.loads(json)
def get_energy_value_by_date(obj, year, month, day):
for value in obj['emeter']['get_daystat']['day_list']:
if value['year'] == year and value['month'] == month and value['day'] == day:
return value['energy']
energy = get_energy_value_by_date(parsed_json, 2016, 10, 2)
So weit so gut. Was ich als nächstes tun muss, ist den Energiewert für verschiedene Tage zu finden. Zum Beispiel heute (unter der Annahme json gültig ist):
import datetime
day_now = datetime.datetime.now().strftime("%d")
month_now = datetime.datetime.now().strftime("%m")
year_now = datetime.datetime.now().strftime("%Y")
parsed_json = json.loads(json)
def get_energy_value_by_date(obj, year, month, day):
for value in obj['emeter']['get_daystat']['day_list']:
if value['year'] == year and value['month'] == month and value['day'] == day:
return value['energy']
energy_today = get_energy_value_by_date(parsed_json, year_now, month_now, day_now)
print energy_today
Wenn ich dieses Skript ausführen gibt es
None
ich hier fehle muß grundlegend etwas. Was ich brauche, ist die Fähigkeit, den Energiewert für jeden Tag eines Monats eines Jahres zur weiteren Verarbeitung zu ziehen.
Danke!
Baobab
drucken day_now, month_now usw. Debug von dort. – Dan
Das Problem ist, dass Sie Ihre Variablen in Ints konvertieren müssen. – Dan