如何用Python解析大型CSV文件并提取指定列到列表(低内存)
提取大CSV文件指定列(不加载全量数据)的Python实现
处理大体积CSV文件时,直接加载全量数据会占用大量内存,用Python内置的csv模块逐行读取是最优方案——它的迭代器特性只会将当前行数据加载到内存,处理完成后立即释放,完美适配大文件场景。
实现代码与说明
核心思路是用csv.reader逐行遍历文件,每次提取目标列数据并加入结果列表:
import csv # 目标列转换为0-based索引(用户需求的第3、6、15列对应索引2、5、14) target_cols = [2, 5, 14] result_list = [] # 用with语句自动管理文件资源,避免泄漏 with open('your_large_file.csv', 'r', newline='', encoding='utf-8') as csv_file: csv_reader = csv.reader(csv_file) # 如果CSV包含表头,取消下面一行注释即可跳过表头 # next(csv_reader) for row in csv_reader: # 提取当前行的目标列数据,组成子列表存入结果 extracted = [row[col] for col in target_cols] result_list.append(extracted)
关键细节提示
- 内存优化:
csv.reader是迭代器,每次仅加载一行数据到内存,不会把整个CSV文件读入内存 - 跨平台兼容:
newline=''是csv模块官方推荐参数,避免Windows/Linux/macOS下的换行符处理异常 - 编码适配:根据你的CSV文件实际编码调整
encoding参数(比如gbk适用于中文Windows生成的文件)
内容的提问来源于stack exchange,提问作者user21595662
相关产品推荐
相关产品推荐

