当前位置: 首页 > news >正文

Python-CSV库

Python CSV 库

1. 库概述

1.1 简介

CSV (Comma Separated Values) 是电子表格和数据库中最常见的数据交换格式。Python 的 csv 模块提供了读写 CSV 文件的功能,支持多种 CSV 变体和自定义格式。

1.2 主要功能

  • 读写 CSV 格式数据
  • 支持多种预定义格式(Excel、Unix等)
  • 提供自定义格式选项
  • 支持字典形式的数据读写

2. 核心类与函数

2.1 读取器类

csv.reader(csvfile, dialect='excel', **fmtparams)

创建一个读取器对象,用于逐行读取 CSV 数据。

参数说明:

  • csvfile: 支持迭代器协议的文件对象,打开时应使用 newline=''
  • dialect: CSV 方言,默认为 'excel'
  • **fmtparams: 格式化参数

返回值:每行作为一个字符串列表。

csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

创建一个字典读取器对象,将每行数据映射为字典。

参数说明:

  • f: 文件对象
  • fieldnames: 字段名序列,如果省略则使用第一行作为字段名
  • restkey: 用于存储多余字段的键名
  • restval: 缺失值的默认值

2.2 写入器类

csv.writer(csvfile, dialect='excel', **fmtparams)

创建一个写入器对象,将数据转换为 CSV 格式。

参数说明:

  • csvfile: 具有 write() 方法的文件对象,打开时应使用 newline=''
  • dialect: CSV 方言,默认为 'excel'
  • **fmtparams: 格式化参数

csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

创建一个字典写入器对象,将字典映射为 CSV 行。

参数说明:

  • f: 文件对象
  • fieldnames: 定义字典键顺序的序列
  • restval: 缺失键的默认值
  • extrasaction: 处理多余键的方式 ('raise' 或 'ignore')

3. 核心方法

3.1 DictWriter 方法

writeheader()

写入字段名作为表头。

writerow(rowdict)

写入单行字典数据。

writerows(rowdicts)

批量写入多行字典数据。

3.2 DictReader 方法

DictReader 作为迭代器使用,通过 for 循环逐行读取数据。

4. 使用示例

4.1 写入 CSV 文件

import csvfieldnames = ['name', 'age', 'city']with open('example.csv', 'w', newline='') as csvfile:writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()writer.writerow({'name': '张三', 'age': 25, 'city': '北京'})data = [{'name': '李四', 'age': 30, 'city': '上海'},{'name': '王五', 'age': 28, 'city': '广州'}]writer.writerows(data)

4.2 读取 CSV 文件

import csvwith open('example.csv', 'r', newline='') as csvfile:reader = csv.DictReader(csvfile)for row in reader:print(row['name'], row['age'], row['city'])

5. 最佳实践

5.1 文件操作

  • 始终使用 newline='' 打开文件以确保跨平台兼容性
  • 使用上下文管理器(with 语句)确保文件正确关闭

5.2 数据处理

  • 根据数据特点选择合适的引用策略
  • 合理使用 dialect 机制简化格式配置
  • 对于未知格式的 CSV 文件,使用 Sniffer 类自动检测格式

5.3 性能优化

  • 处理大量数据时考虑使用缓冲机制
  • 避免不必要的数据类型转换
http://www.hskmm.com/?act=detail&tid=10079

相关文章:

  • C++小白修仙记_LeetCode刷题_位运算
  • C++小白修仙记_LeetCode刷题_双指针
  • 前路漫漫亦灿灿 往事堪堪亦澜澜
  • 使用uv和pycharm搭建python开发环境
  • lc1032-字符流
  • C++小白修仙记_LeetCode刷题_哈希表
  • 【F#学习】字符串String
  • 现代汽车前瞻杯2025牛客暑期多校训练营3
  • 实用指南:多技术融合提升环境生态水文、土地土壤、农业大气等领域的数据分析与项目科研水平
  • 【F#学习】“变量”?绑定!
  • 2023 CCPC 深圳 F
  • 完整教程:【算法】双指针(三)[快慢指针]-快乐数
  • 9.19做题资料:哈希表查找时间复杂度分析
  • CF2143F Increasing Xor
  • 提到链接,你能想到什么
  • 实用指南:容器逃逸漏洞
  • 三种方式处理SpringBoot全局异常
  • ECT-OS-JiuHuaShan 框架的元推理,是历史性的文明话语权
  • 应对连写与变体:深度学习赋能维吾尔文识别的核心方案与难点解析
  • CMake工具链
  • 20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
  • 【脑电分析系列】第6篇:经典ERP成分解析 — P300、N170、N400等波形与它们代表的认知功能 — 洞察大脑的认知“电信号语言” - 教程
  • 9.19
  • [GDKOI2023 提高组] 游戏 题解
  • CSP-J/S 2025 游记
  • 2025.9.19 计数dp小记
  • Odoo19.0发布、微信支付、支付宝支付和顺丰模块同步上线
  • 9月14-21日小记 - L
  • ctfshow web入门 命令执行
  • 解题记录说是 | P3695 CYaRon!语