使用datetime函数获取股票API数据时遇KeyError问题求助
问题:使用datetime获取股票数据触发KeyError
我尝试用datetime函数而非硬编码日期来获取股票数据,结果出现了KeyError错误,求帮忙解决!
股票数据示例
'Time Series (Daily)': {'2022-09-30': {'1. open': '266.1450', '2........}
相关代码
from datetime import date from datetime import timedelta yesterday_close = stock_data['Time Series (Daily)'][yesterday]['4. close']
报错信息
Traceback (most recent call last): yesterday_close = stock_data['Time Series (Daily)'][yesterday]['4. close'] KeyError: datetime.date(2022, 9, 30)
问题根源
股票数据中「Time Series (Daily)」下的日期键是字符串格式(例如'2022-09-30'),但代码里使用的是datetime.date对象,两者类型不匹配,导致字典查找失败触发KeyError。
解决办法
把datetime.date对象转换成和数据中一致的YYYY-MM-DD格式字符串即可,用strftime()方法实现:
from datetime import date, timedelta # 将date对象转为匹配格式的字符串 yesterday_str = yesterday.strftime('%Y-%m-%d') # 用字符串键查找数据 yesterday_close = stock_data['Time Series (Daily)'][yesterday_str]['4. close']
额外提醒:如果目标日期是周末或节假日,股票数据可能不存在,建议增加存在性判断避免再次报错:
yesterday_str = yesterday.strftime('%Y-%m-%d') daily_series = stock_data['Time Series (Daily)'] if yesterday_str in daily_series: yesterday_close = daily_series[yesterday_str]['4. close'] else: print(f"未找到{yesterday_str}的股票数据")
内容的提问来源于stack exchange,提问作者code nlsn
相关产品推荐
相关产品推荐

