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() 等
相关推荐
郝学胜-神的一滴5 分钟前
基于C++的词法分析器:使用正则表达式的实现
开发语言·c++·程序人生·正则表达式·stl
爱掘金的土拨鼠1 小时前
国产化dm数据库锁表解锁
数据库
庖丁解java1 小时前
N个Utils
数据库
Mr. zhihao2 小时前
SQL LEFT JOIN 与 WHERE 条件的隐藏坑
数据库·sql
Juchecar2 小时前
分析:将现代开源浏览器的JavaScript引擎更换为Python的可行性与操作
前端·javascript·python
科大饭桶2 小时前
昇腾AI自学Day2-- 深度学习基础工具与数学
人工智能·pytorch·python·深度学习·numpy
2301_793086872 小时前
Redis 04 Reactor
数据库·redis·缓存
林开落L2 小时前
库的制作与原理
linux·开发语言·动静态库·库的制作
Sais_Z2 小时前
ClickHouse的学习与了解
数据库·clickhouse
m0_480502642 小时前
Rust 入门 泛型和特征-特征对象 (十四)
开发语言·后端·rust