Anonymous
Jmespath для получения ключа и значения только для определенных имен ключей
Сообщение
Anonymous » 09 янв 2025, 05:24
У меня есть файл Json с несколькими измерениями, я хочу получить только значения «wind_speed_avg». Если значение есть, получите также значение «
ts » и добавьте lsid< /strong>, но это не тот же путь.
JSON выглядит так:
Код: Выделить всё
{'station_id_uuid': 'd0d1a311',
'sensors': [
{'lsid': 3531,
'data': [
{'bar_absolute': 29.836,
'bar_hi_at': 1727761555,
'ts': 1727762400
}
],
'sensor_type': 242,
'data_structure_type': 13
},
{'lsid': 3558,
'data': [
{'wind_speed_avg': 10,
'uv_dose': 0.12857144,
'wind_chill_last': 66.5,
'ts': 1727763300
},
{'wind_speed_avg': 12,
'uv_dose': 0.096428566,
'wind_chill_last': 65.8,
'ts': 1727762896
},
{'wind_speed_avg': 8.75,
'uv_dose': 0.074999996,
'wind_chill_last': 66.1,
'ts': 1727763665
}
],
'sensor_type': 43,
'data_structure_type': 11
}
],
'generated_at': 1734604671,
'station_id': 988
}
Я использую этот скрипт Python:
Код: Выделить всё
data = jmespath.search("""
sensors[].{
value: data[].wind_speed_avg,
time: data[].ts,
sensor_id: lsid
}
""", json_data)
и результат, который я получаю, следующий:
Код: Выделить всё
[
{'value': [], 'time': [1727762400], 'sensor_id': 3531},
{'value': [10, 12, 8.75], 'time': [1727763300, 1727762896, 1727763665], 'sensor_id': 3558}
]
Я хочу, чтобы результат был таким:
Код: Выделить всё
[
{'value': None, 'time': 1727762400, 'sensor_id': 3531},
{'value': 10, 'time': 1727763300, 'sensor_id': 3558},
{'value': 12, 'time': 1727762896,'sensor_id': 3558},
{'value': 8.75, 'time': 1727763665,'sensor_id': 3558},
]
Я хочу добавить узел Sensor_id в словарь.
Есть идеи, как это сделать?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... -key-names
1736389471
Anonymous
У меня есть файл Json с несколькими измерениями, я хочу получить только значения «wind_speed_avg». Если значение есть, получите также значение «[b]ts[/b]» и добавьте lsid< /strong>, но это не тот же путь. JSON выглядит так: [code] {'station_id_uuid': 'd0d1a311', 'sensors': [ {'lsid': 3531, 'data': [ {'bar_absolute': 29.836, 'bar_hi_at': 1727761555, 'ts': 1727762400 } ], 'sensor_type': 242, 'data_structure_type': 13 }, {'lsid': 3558, 'data': [ {'wind_speed_avg': 10, 'uv_dose': 0.12857144, 'wind_chill_last': 66.5, 'ts': 1727763300 }, {'wind_speed_avg': 12, 'uv_dose': 0.096428566, 'wind_chill_last': 65.8, 'ts': 1727762896 }, {'wind_speed_avg': 8.75, 'uv_dose': 0.074999996, 'wind_chill_last': 66.1, 'ts': 1727763665 } ], 'sensor_type': 43, 'data_structure_type': 11 } ], 'generated_at': 1734604671, 'station_id': 988 } [/code] Я использую этот скрипт Python: [code]data = jmespath.search(""" sensors[].{ value: data[].wind_speed_avg, time: data[].ts, sensor_id: lsid } """, json_data) [/code] и результат, который я получаю, следующий: [code][ {'value': [], 'time': [1727762400], 'sensor_id': 3531}, {'value': [10, 12, 8.75], 'time': [1727763300, 1727762896, 1727763665], 'sensor_id': 3558} ] [/code] Я хочу, чтобы результат был таким: [code][ {'value': None, 'time': 1727762400, 'sensor_id': 3531}, {'value': 10, 'time': 1727763300, 'sensor_id': 3558}, {'value': 12, 'time': 1727762896,'sensor_id': 3558}, {'value': 8.75, 'time': 1727763665,'sensor_id': 3558}, ] [/code] Я хочу добавить узел Sensor_id в словарь. Есть идеи, как это сделать? Подробнее здесь: [url]https://stackoverflow.com/questions/79294634/jmespath-to-get-key-and-value-only-for-specific-key-names[/url]