Python csv 模块详解
csv 模块是 Python 标准库中用于读写 CSV(Comma-Separated Values)文件的工具,支持多种格式的 CSV 数据解析。以下内容涵盖基础用法、高级配置及常见问题解决方案,并附带代码示例。
读取 CSV 文件
使用 csv.reader 读取 CSV 文件,默认按行分割数据:
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row) # 每行返回一个列表
若 CSV 文件包含标题行,可通过 csv.DictReader 按字典访问数据:
with open('data.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['column_name']) # 通过列名访问
写入 CSV 文件
使用 csv.writer 写入数据,支持列表或元组格式:
data = [['Name', 'Age'], ['Alice', 24], ['Bob', 30]]
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data) # 写入多行
若需字典数据写入,使用 csv.DictWriter,并指定字段名:
fieldnames = ['Name', 'Age']
data = [{'Name': 'Alice', 'Age': 24}, {'Name': 'Bob', 'Age': 30}]
with open('output.csv', 'w', newline='') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader() # 写入标题行
writer.writerows(data)
自定义分隔符与引号
CSV 文件可能使用非逗号分隔符(如制表符 \t),通过 delimiter 参数指定:
with open('data.tsv', 'r') as file:
reader = csv.reader(file, delimiter='\t')
for row in reader:
print(row)
处理包含特殊字符的字段时,可通过 quoting 参数控制引号行为:
with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC) # 非数字字段加引号
writer.writerow(['Text', 100, 'More "text"'])
处理编码问题
若 CSV 文件包含非 ASCII 字符(如中文),需指定编码格式(如 utf-8):
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
错误处理与大型文件
读取大型 CSV 文件时,建议逐行处理以避免内存不足:
with open('large_data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
process_row(row) # 自定义处理函数
若文件格式不规范,可通过 error_bad_lines 跳过错误行(需 pandas 配合):
import pandas as pd
try:
df = pd.read_csv('data.csv', error_bad_lines=False)
except Exception as e:
print(f"Error: {e}")
总结
csv 模块提供了灵活的 CSV 数据读写功能,适用于从简单数据导出到复杂格式解析的场景。通过调整分隔符、引号规则和编码,可适配多种数据源需求。对于更复杂的数据操作(如筛选、聚合),建议结合 pandas 库使用。

1万+

被折叠的 条评论
为什么被折叠?



