跳转到主内容
极星编程网:以代码为星,赴技术山海!

如何将 CSV 文件逐行读取为字典(纯 Python,不依赖第三方模块)

本文介绍如何使用纯 python(不导入 csv 或其他模块)将 csv 文件解析为多个字典,其中首行为字段名(作为字典键),后续每行为对应值(作为字典值),并提供简洁、健壮的实现方案。 本文介绍如何使用纯 python (不导入 csv 或其他模块)将 csv 文件解析为多个字典,其中首行为字段名(作为字典键),后续每行为对应值(作为字典值),并提供简洁、健壮的实现方案。 在处理结构化文本数据时,CSV 是最常见格式之一。当无法或不希望依赖 csv 模块(例如受限环境、教学场景或轻量脚本),我们完全可以仅用内置函数完成「以表头为键、每行为值」的字典化转换。 核心思路分为两步: 读取并解析表头行 → 提取字段名列表; 逐行处理数据行 → 将每行按逗号分割,与表头用 zip() 配对,再通过 dict() 构造映射关系。 以下是完整、可直接运行的示例代码:
with open("data.csv", "r", encoding="utf-8") as f: # 读取第一行作为 headers,并清洗(去除换行符、空格,按逗号切分) headers = next(f).strip().split(",") # 遍历剩余每一行 for line in f: # 清洗并分割当前行,确保与 headers 长度一致 values = line.strip().split(",") # 使用 zip 将 headers 和 values 组合成键值对,转为字典 row_dict = dict(zip(headers, values)) print(row_dict)
假设 data.csv 内容如下: 立即学习 “ Python免费学习笔记(深入) ”; Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载
Column A,Column B Cell 1,Cell 2 Cell 3,Cell 4 Cell 5,Cell 6
运行后将输出:
{'Column A': 'Cell 1', 'Column B': 'Cell 2'} {'Column A': 'Cell 3', 'Column B': 'Cell 4'} {'Column A': 'Cell 5', 'Column B': 'Cell 6'}
✅ 关键优势说明 : next(f) 精准消费首行,避免手动索引或条件判断; strip() 消除行尾 \n 及两端空格,防止键或值含意外空白; zip(headers, values) 天然对齐,即使字段含空值或逗号(未加引号)也保持位置一一对应(注意:此方案 不支持含逗号/换行/引号的复杂 CSV ,如需完整解析请改用 csv 模块); dict(zip(...)) 是构建映射最简洁、Pythonic 的方式,远优于循环 update() 或手动赋值。 ⚠️ 注意事项 : 若 CSV 中存在空行,line.strip() 后可能得到空列表 [],导致 zip 生成空字典。建议添加校验:
if values and len(values) == len(headers): row_dict = dict(zip(headers, values))
中文字段或内容需指定 encoding="utf-8"(Windows 默认可能是 gbk),否则易出现乱码; 此方法适用于标准逗号分隔、无转义的简单 CSV;对于生产级 CSV(含引号包裹、嵌入逗号等),务必使用 import csv 配合 csv.reader。 掌握这一模式,你就能在零依赖前提下,高效、清晰地将表格数据转化为易于操作的字典序列——这是数据预处理中一项基础而实用的核心技能。

相关文章