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 csv

fieldnames = ['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 csv

with 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 性能优化

  • 处理大量数据时考虑使用缓冲机制
  • 避免不必要的数据类型转换
posted @ 2025-09-19 23:43  aaooli  阅读(24)  评论(0)    收藏  举报