如何通过urllib下载CSV并转换为指定字段的Python字典
完整实现代码
直接使用Python标准库自带的csv、io模块即可实现需求,无需安装第三方依赖,代码如下:
from urllib.request import urlopen import csv from io import StringIO # 目标CSV下载地址 target_url = "https://query1.finance.yahoo.com/v7/finance/download/aapl?period1=1640988000&period2=1657314000&interval=1d&events=history&includeAdjustedClose=true&volume" result = [] with urlopen(target_url) as response: # 读取全部响应字节流,按utf-8解码为文本 content = response.read().decode("utf-8") # 将内存中的文本包装为类文件对象,供csv模块直接读取,无需落地保存本地文件 csv_buffer = StringIO(content) # 用DictReader解析,自动将CSV首行表头作为字典键名 reader = csv.DictReader(csv_buffer) # 逐行读取解析结果存入列表 for row in reader: result.append(row) # 测试输出前2条数据验证效果 for item in result[:2]: print(item)
关键说明
- 原代码仅调用
readline()只能读取响应的第一行表头内容,替换为read()才能获取完整的CSV全量数据 - 解析生成的字典键名和CSV内字段完全对应,固定为
Date、Open、High、Low、Close、Adj Close、Volume,不需要手动做字段映射 DictReader读取的字段值默认是字符串类型,如果需要做数值计算,可以自行做类型转换:例如将价格类字段转为float类型,Volume字段转为int类型- 整个解析流程全在内存中完成,不会在本地生成任何CSV/Excel实体文件
内容的提问来源于stack exchange,提问作者amit_python
相关产品推荐
相关产品推荐

