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() 等
相关推荐
香饽饽~、1 小时前
【第十一篇】SpringBoot缓存技术
java·开发语言·spring boot·后端·缓存·intellij-idea
蓝婷儿1 小时前
Python 机器学习核心入门与实战进阶 Day 1 - 分类 vs 回归
python·机器学习·分类
Devil枫2 小时前
Kotlin扩展函数与属性
开发语言·python·kotlin
菠萝加点糖2 小时前
Kotlin Data包含ByteArray类型
android·开发语言·kotlin
格调UI成品2 小时前
预警系统安全体系构建:数据加密、权限分级与误报过滤方案
大数据·运维·网络·数据库·安全·预警
程序员阿超的博客3 小时前
Python 数据分析与机器学习入门 (八):用 Scikit-Learn 跑通第一个机器学习模型
python·机器学习·数据分析·scikit-learn·入门教程·python教程
2301_803554523 小时前
c++中类的前置声明
java·开发语言·c++
xingshanchang4 小时前
PyTorch 不支持旧GPU的异常状态与解决方案:CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH
人工智能·pytorch·python
不想写bug呀6 小时前
多线程案例——单例模式
java·开发语言·单例模式
心平愈三千疾6 小时前
通俗理解JVM细节-面试篇
java·jvm·数据库·面试