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() 等
相关推荐
badhope8 分钟前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园1 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
吴佳浩1 小时前
GPU 编号进阶:CUDA\_VISIBLE\_DEVICES、多进程与容器化陷阱
人工智能·pytorch·python
C++ 老炮儿的技术栈1 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl1 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
Liu628882 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
哆啦A梦15882 小时前
Springboot整合MyBatis实现数据库操作
数据库·spring boot·mybatis
IT猿手2 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
全栈凯哥2 小时前
18.Python中的导入类完全指南
python
Zzzzmo_2 小时前
【MySQL】JDBC(含settings.xml文件配置/配置国内镜像以及pom.xml文件修改)
数据库·mysql