CSV 文件读写
CSV 概述
CSV(Comma Separated Values):纯文本表格数据,逗号分隔,每行一条记录。广泛用于数据导入导出、跨系统数据交换。
标准库 csv 模块
写入 CSV
import csv
names = ['Alice', 'Bob', 'Charlie']
scores = [[92, 88, 95], [78, 82, 90], [85, 91, 87]]
with open('scores.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '语文', '数学', '英语']) # 表头
for name, score in zip(names, scores):
writer.writerow([name] + score)
自定义分隔符:
writer = csv.writer(f, delimiter='|', quoting=csv.QUOTE_ALL) # 用 | 分隔,全部加引号
读取 CSV
import csv
with open('scores.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row) # ['姓名', '语文', '数学', '英语']
用字典方式读写
import csv
# 写入(更清晰,可指定字段)
with open('scores.csv', 'w', newline='', encoding='utf-8') as f:
fieldnames = ['姓名', '语文', '数学', '英语']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'姓名': 'Alice', '语文': 92, '数学': 88, '英语': 95})
writer.writerow({'姓名': 'Bob', '语文': 78, '数学': 82, '英语': 90})
# 读取
with open('scores.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['姓名'], row['数学']) # 按列名访问
pandas 读写 CSV(推荐)
数据分析推荐使用 pandas,功能更强大:
pip install pandas
import pandas as pd
# 读取
df = pd.read_csv('scores.csv')
print(df['姓名'])
print(df.describe())
# 写入
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
常用参数:
| 参数 | 说明 |
|---|---|
index=False |
不写入行索引列 |
encoding='utf-8-sig' |
避免 Excel 打开乱码 |
usecols=[...] |
只读取指定列 |
总结
csv.writer/csv.reader:基础读写,适合简单场景csv.DictWriter/csv.DictReader:按字典读写,代码更清晰pandas.read_csv/to_csv:数据分析首选,功能丰富- 写入 CSV 时建议加
newline='',避免行间距问题