如何从伦敦空气质量API返回的JSON字典中提取@Value值?
提取伦敦空气质量API返回的所有@Value值
核心思路
返回的JSON结构层级为:RawAQData → Data(数组)→ 每个元素是包含@Value的字典。通过字典键取值+遍历数组即可提取所有目标值。
修改后的完整代码
import datetime import requests def get_live_data_from_api(site_code='MY1', species_code='NO', start_date=None, end_date=None): start_date = datetime.date.today() if start_date is None else start_date end_date = start_date + datetime.timedelta(days=1) if end_date is None else end_date endpoint = "https://api.erg.ic.ac.uk/AirQuality/Data/SiteSpecies/SiteCode={site_code}/SpeciesCode={species_code}/StartDate={start_date}/EndDate={end_date}/Json" url = endpoint.format( site_code=site_code, species_code=species_code, start_date=start_date, end_date=end_date ) res = requests.get(url).json() # 提取包含所有测量数据的数组 data_entries = res['RawAQData']['Data'] # 遍历数组,收集所有@Value值 all_values = [entry['@Value'] for entry in data_entries] # 可选:过滤空值并转换为数值类型(方便后续计算分析) filtered_numeric_values = [float(val) for val in all_values if val.strip() != ''] print("所有原始@Value值:", all_values) print("过滤后的数值型值:", filtered_numeric_values) return all_values, filtered_numeric_values # 调用示例 get_live_data_from_api()
关键步骤说明
- 通过
res['RawAQData']['Data']直接获取存储所有测量记录的数组 - 使用列表推导式遍历数组,每个元素通过完整键名
'@Value'取值(注意键名包含@符号,必须完全匹配) - 可选处理逻辑:API返回的部分
@Value可能是空字符串,可通过过滤+类型转换得到可用的数值数据
内容的提问来源于stack exchange,提问作者Franklin Hole
相关产品推荐
相关产品推荐

