Python开发推荐使用csv模块而非底层\_csv;读取用csv.reader(逐行列表)或csv.DictReader(带表头字典);写入用csv.writer或csv.DictWriter;注意编码、换行、字段类型转换等细节。
Python内置的
模块是底层实现,一般不直接使用;实际开发中推荐用
模块(它封装并导出了
的功能),既稳定又易用。
读取CSV文件的基本方法
使用
逐行读取,返回可迭代对象,每行是字符串列表:
先用
以文本模式打开文件(注意编码,如
)
传入文件对象给
,可指定分隔符(
)、引号规则等参数
遍历reader对象,每行自动按逗号拆分,并处理引号、换行、空格等常见格式问题
示例:
importcsvwith open('data.csv', encoding='utf-8') as f:reader = csv.reader(f)for row in reader:print(row) # 如 ['Alice', '25', 'Beijing']
处理带表头的CSV文件
用
更直观:自动把首行当字段名,后续每行返回字典:
立即学习
“
Python免费学习笔记(深入)
”;
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载
无需手动跳过标题行,
参数可自定义列名
通过键名访问数据,比如
比
更清晰、抗列序变化
若文件无表头,可传入
示例:
with open('users.csv', encoding='utf-8') as f:reader = csv.DictReader(f)for row in reader:print(row['name'], row['age'])
写入CSV文件的对应操作
写入用
或
,逻辑对称:
写一行列表
批量写入
需先调用
写表头,再用
写字典数据
写入时注意指定
避免Windows下多出空行
常见问题与注意事项
CSV看似简单,但细节影响正确性:
编码错误最常见——中文乱码多半因没设
(兼容BOM)
含逗号、换行符或引号的字段会被自动加引号保护,解析时
模块会正确还原
空行默认被跳过,如需保留,可用
或手动判断
数值列读出来仍是字符串,需显式转换:
或用
自动推断类型
_csvcsv_csvcsv.readeropen()encoding='utf-8'csv.reader()delimiter=','csv.DictReaderfieldnamesrow['name']row[0]fieldnames=['id', 'name', 'age']csv.writercsv.DictWritercsv.writer(f).writerow(['a', 'b', 'c'])csv.writer(f).writerows([['x','y'], ['m','n']])DictWriterwriteheader()writerow({})newline=''encoding='utf-8-sig'csvskipinitialspace=Trueif row:int(row[1])pandas