Python:如何从weerlive.nl API返回字典提取树莓派气象站所需数据
从Weerlive.nl API响应中提取温度和湿度值
从荷兰皇家气象研究所(KNMI)的Weerlive.nl API获取的天气数据是一个仅包含liveweer键的字典,其对应值是两层嵌套的列表结构。要提取你需要的temp(温度)和lv(湿度)值,可以按以下步骤操作(以Python为例,适配树莓派环境):
代码实现
# 假设API返回的字典存储在这个变量中 weather_response = {"liveweer": [[{'plaats': 'Tilburg', 'timestamp': '1713019987', 'time': '13-04-2024 16:53', 'temp': '23.3', 'gtemp': '22.3', 'samenv': 'Licht bewolkt', 'lv': '48', 'windr': 'ZW', 'windrgr': '225', 'windms': '6', 'winds': '4', 'windk': '11.7', 'windkmh': '21.6', 'luchtd': '1020.5', 'ldmmhg': '765', 'dauwp': '11.7', 'zicht': '40', 'verw': 'Vandaag zonnige perioden, droog en vrij warm. Zondag frisser', 'sup': '06:45', 'sunder': '20:35', 'image': 'lichtbewolkt', 'd0weer': 'bewolkt', 'd0tmax': '22', 'd0tmin': '12', 'd0windk': '3', 'd0windknp': '10', 'd0windms': '5', 'd0windkmh': '19', 'd0windr': 'ZW', 'd0windrgr': '225', 'd0neerslag': '0', 'd0zon': '0', 'd1weer': 'halfbewolkt', 'd1tmax': '15', 'd1tmin': '10', 'd1windk': '3', 'd1windknp': '8', 'd1windms': '4', 'd1windkmh': '15', 'd1windr': 'W', 'd1windrgr': '270', 'd1neerslag': '20', 'd1zon': '50', 'd2weer': 'regen', 'd2tmax': '11', 'd2tmin': '7', 'd2windk': '3', 'd2windknp': '10', 'd2windms': '5', 'd2windkmh': '19', 'd2windr': 'ZW', 'd2windrgr': '225', 'd2neerslag': '90', 'd2zon': '20', 'alarm': '0', 'alarmtxt': ''}]]} # 定位到实际的天气数据字典 weather_details = weather_response['liveweer'][0][0] # 提取温度和湿度 temp_value = weather_details['temp'] humidity_value = weather_details['lv'] # 可选:转换为数值类型(方便后续计算或显示) temp_value = float(temp_value) humidity_value = int(humidity_value) # 输出结果 print(f"当前温度: {temp_value}°C") print(f"当前湿度: {humidity_value}%")
关键说明
weather_response['liveweer']获取到的是外层列表,通过两次[0]索引,就能拿到嵌套最内层的天气数据字典。- API返回的
temp和lv都是字符串类型,如果你的气象站需要数值数据,记得转换成float或int类型。
内容的提问来源于stack exchange,提问作者jdelange
相关产品推荐
相关产品推荐

