Python csv模块是轻量标准工具,不解析数据类型、无样式支持但稳定可控;读写需指定newline=''防空行,自动处理转义,DictReader/Writer适配表头,注意编码、换行符及手动类型转换。

Python 的 csv 模块是处理 CSV 文件最轻量、最标准的工具,无需额外安装,适合结构清晰的表格数据读写。它不解析数据类型(所有字段默认为字符串),也不支持 Excel 公式或样式,但胜在稳定、可控、无依赖。
用 csv.reader 读取 CSV 文件
适用于简单、规整的 CSV 文件(如导出的数据库表、日志统计结果)。注意文件需以文本模式打开,并指定 newline='' 避免 Windows 下空行问题。
- 使用
csv.reader(f)返回可迭代对象,每行是字符串列表 - 若首行为列名,可用
next(reader)跳过,或配合csv.DictReader直接映射为字典 - 遇到含逗号、换行符或双引号的字段,只要原始 CSV 正确转义(如
"Smith, John"),reader能自动解析
用 csv.writer 写入 CSV 文件
写入前先创建 writer 对象,再逐行调用 writer.writerow() 或批量用 writer.writerows()。
- 推荐始终传入
newline=''参数(尤其在 Windows 上),否则可能多出空行 - 字段中含特殊字符(如逗号、引号)时,
writer默认自动加双引号并转义,无需手动处理 - 如需自定义分隔符(如用制表符)、引号规则或编码,可通过
dialect或参数控制,例如delimiter=';'或quoting=csv.QUOTE_ALL
用 csv.DictReader / DictWriter 处理带表头的数据
当 CSV 含明确列名时,字典方式更直观,避免靠索引取值出错。
立即学习“Python免费学习笔记(深入)”;
-
DictReader(f)自动把首行当 key,后续每行返回OrderedDict(Python 3.7+ 普通 dict 也保持顺序) -
DictWriter(f, fieldnames=['name', 'age'])需显式传入字段名列表;写入前必须调用writeheader()输出表头 - 缺失字段会写为空字符串,多余字段被忽略——可结合
restval和extrasaction控制行为
常见问题与注意事项
CSV 看似简单,实操中容易踩坑:










