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

2次阅读

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

本文介绍如何使用纯 python(不导入 csv 或其他模块)将 csv 文件解析为多个字典,其中首行为字段名(作为字典键),后续每行为对应值(作为字典值),并提供简洁、健壮的实现方案。

本文介绍如何使用纯 python(不导入 csv 或其他模块)将 csv 文件解析为多个字典,其中首行为字段名(作为字典键),后续每行为对应值(作为字典值),并提供简洁、健壮的实现方案。

在处理结构化文本数据时,CSV 是最常见格式之一。当无法或不希望依赖 csv 模块(例如受限环境、教学场景或轻量脚本),我们完全可以仅用内置函数完成「以表头为键、每行为值」的字典化转换。

核心思路分为两步:

  1. 读取并解析表头行 → 提取字段名列表;
  2. 逐行处理数据行 → 将每行按逗号分割,与表头用 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免费学习笔记(深入)”;

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。

掌握这一模式,你就能在零依赖前提下,高效、清晰地将表格数据转化为易于操作的字典序列——这是数据预处理中一项基础而实用的核心技能。

text=ZqhQzanResources