Python csv 模块

csv 是 Python 标准库中专门处理 CSV(Comma-Separated Values)文件的模块,适合轻量级读写,不依赖外部库,广泛用于表格型数据的导入与导出。

常用功能

常用的属性和方法

方法 说明 示例
csv.reader() 从文件对象读取 CSV 数据,for row in csv_reader:逐行读取文件内容,每一行数据会被解析为一个列表。 reader = csv.reader(file)
csv.writer() 将数据写入 CSV 文件 writer = csv.writer(file)
csv.DictReader() 将 CSV 行读取为字典(带表头),将 CSV 文件的每一行解析为字典 dict_reader = csv.DictReader(file)
csv.DictWriter() 将字典写入 CSV 文件(需指定字段名) dict_writer = csv.DictWriter(file, fieldnames)
csv.register_dialect() 注册自定义 CSV 格式(如分隔符) csv.register_dialect('mydialect', delimiter=',')
csv.unregister_dialect() 删除已注册的方言 csv.unregister_dialect('mydialect')
csv.list_dialects() 列出所有已注册的方言 print(csv.list_dialects())

csv.reader 和 csv.writer 对象常用方法

方法 说明 适用对象
next() 迭代读取下一行(或使用 for 循环) reader
writerow(row) 写入单行数据 writer
writerows(rows) 写入多行数据(列表的列表) writer

csv.DictReader 和 csv.DictWriter 对象特性

特性/方法 说明 示例
fieldnames 字段名列表(DictReader 自动从首行获取) dict_reader.fieldnames
writeheader() 写入表头行(DictWriter 专用) dict_writer.writeheader()

常用参数说明

参数 说明 示例值 适用方法
delimiter 字段分隔符 ','(默认), '\t' reader/writer
quotechar 引用字符(包围特殊字段) '"'(默认) reader/writer
quoting 引用规则 csv.QUOTE_ALL(全部引用) reader/writer
skipinitialspace 忽略分隔符后的空格 True/False reader
lineterminator 行结束符 '\r\n'(默认) writer
dialect 预定义的方言名称 'excel'(默认) 所有方法

实例

  1. 读取 CSV 文件
python 复制代码
import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file, delimiter=',')
    for row in reader:
        print(row)  # 每行是一个列表
  1. 写入 CSV 文件
python 复制代码
data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30]]

with open('output.csv', 'w', newline='') as file:
    # newline='' 用于避免在 Windows 系统中出现空行。
    writer = csv.writer(file)
    writer.writerows(data)  # 写入多行
  1. 使用 DictReader 和 DictWriter(带表头)
python 复制代码
# 读取
with open('data.csv', 'r') as file:
    dict_reader = csv.DictReader(file)
    for row in dict_reader:
        print(row['Name'], row['Age'])  # 通过字段名访问

# 写入
fieldnames = ['Name', 'Age']
with open('output.csv', 'w', newline='') as file:
    dict_writer = csv.DictWriter(file, fieldnames=fieldnames)
    dict_writer.writeheader()  # 写入表头
    dict_writer.writerow({'Name': 'Alice', 'Age': 25})
  1. 自定义方言(如处理 TSV 文件)
python 复制代码
csv.register_dialect('tsv', delimiter='\t', quoting=csv.QUOTE_NONE)

with open('data.tsv', 'r') as file:
    reader = csv.reader(file, dialect='tsv')
    for row in reader:
        print(row)

✅ 小贴士

  • 需要读中文 CSV 可设:encoding='utf-8-sig' 或 'gbk'
  • csv 模块速度快、兼容好,适合中小文件处理
  • 对于大型或分析型数据,建议用 pandas.read_csv() 等
相关推荐
资深web全栈开发1 小时前
[特殊字符]图解 Golang 反射机制:从底层原理看动态类型的秘密
开发语言·后端·golang
L.EscaRC1 小时前
浅析MySQL InnoDB存储引擎的MVCC实现原理
数据库·mysql
CAE3201 小时前
基于机器学习的智能垃圾短信检测超强系统
人工智能·python·机器学习·自然语言处理·垃圾短信拦截
热爱运维的小七2 小时前
MongoDB 内存管理避坑指南:解决高占用、页错误等核心问题,让数据库性能翻倍
数据库·mongodb
MarcoPage2 小时前
Python 字典推导式入门:一行构建键值对映射
java·linux·python
冉冰学姐4 小时前
SSM公办小学网络报名系统f3d3p(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·公办小学网络报名系统·教育信息化
叡鳍5 小时前
hive---HQL查询
数据库
vortex55 小时前
谷歌黑客语法挖掘 SQL 注入漏洞
android·数据库·sql
九河云6 小时前
软件开发平台 DevCloud
运维·服务器·数据库·科技·华为云
独隅6 小时前
在 Lua 中,你可以使用 `os.date()` 函数轻松地将时间戳转换为格式化的时间字符串
开发语言·lua