You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Requests库按年份筛选ISO格式日期的API数据?

解决API筛选某年份ISO日期数据的问题

你遇到的核心问题是直接传年份作为date参数不符合API的日期格式要求,得根据API支持的筛选方式来调整,分三种常见场景:


1. API支持日期范围查询

很多API会提供start_date/end_date或者类似date__gte(大于等于)、date__lte(小于等于)的参数来限定日期范围。针对2020年的数据,你可以这样设置参数:

import requests

params = {
    'weather': 'rainy',
    'start_date': '2020-01-01',
    'end_date': '2020-12-31'
}

response = requests.get('你的API地址', params=params)
data = response.json()

如果API用的是类似Django ORM的查询参数,可能需要这样写:

params = {
    'weather': 'rainy',
    'date__gte': '2020-01-01',
    'date__lte': '2020-12-31'
}

2. API支持前缀/模糊匹配

部分API允许用通配符做前缀匹配,比如SQL风格的%或者*作为通配符。你可以尝试传递带通配符的日期值:

params = {
    'weather': 'rainy',
    'date': '2020%'  # 或者 '2020-*',具体看API文档的规则
}

response = requests.get('你的API地址', params=params)
data = response.json()

有些API还支持专门的前缀查询参数,比如date__startswith:

params = {
    'weather': 'rainy',
    'date__startswith': '2020'
}

3. API不支持任何日期筛选,本地处理

如果API没有提供任何日期筛选能力,只能先拉取所有符合weather: rainy的数据,再在本地筛选出2020年的记录:

import requests

params = {
    'weather': 'rainy'
}

response = requests.get('你的API地址', params=params)
all_data = response.json()

# 筛选2020年的数据(简单前缀匹配)
filtered_data = [item for item in all_data if item['date'].startswith('2020')]

# 或者用datetime模块解析日期后判断年份(更严谨,避免日期格式异常)
from datetime import datetime

filtered_data = []
for item in all_data:
    try:
        date_obj = datetime.fromisoformat(item['date'])
        if date_obj.year == 2020:
            filtered_data.append(item)
    except ValueError:
        # 处理格式错误的日期
        continue

内容的提问来源于stack exchange,提问作者kunshabba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:10:30