PythonCSV处理教程_csv模块读写实战

12次阅读

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

PythonCSV处理教程_csv模块读写实战

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() 输出表头
  • 缺失字段会写为空字符串,多余字段被忽略——可结合 restvalextrasaction 控制行为

常见问题与注意事项

CSV 看似简单,实操中容易踩坑:

  • red”>编码错误中文乱码多因未指定 encoding='utf-8-sig'(Windows 记事本保存的 CSV 常带 bom
  • 换行符干扰:字段内含换行符时,必须用双引号包裹该字段,且文件需用 newline='' 打开
  • 数字被当字符串csv 模块不做类型推断,需手动转换,如 int(row[1])Float(row[2])
  • 大文件处理:避免 list(reader) 一次性加载,应边读边处理;超大数据建议改用 pandas.read_csv(chunksize=...)
text=ZqhQzanResources