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