PythonCSV处理教程_csv模块读写实战
发布时间 - 2026-01-08 00:00:00 点击率:次Python csv模块是轻量标准工具,不解析数据类型、无样式支持但稳定可控;读写需指定newline=''防空行,自动处理转义,DictReader/Writer适配表头,注意编码、换行符及手动类型转换。
Python 的 csv 模块是处理 CSV 文件最轻量、最标准的工具,无需额外安装,适合结构清晰的表格数据读写。它不解析数据类型(所有字段默认为字符串),也不支持 Excel 公式或样式,但胜在稳定、可控、无依赖。
用 csv.reader 读取 CSV 文件
适用于简单、规整的 CSV 文件(如导出的数据库表、日志统计结果)。注意文件需以文本模式打开,并指定 newline='' 避免 Windows 下空行问题。
- 使用
csv.reader(f)返回可迭代对象,每行是字符串列表 - 若首行为列名,可用
next(reader)跳过,或配合csv.DictReader直接映射为字典 - 遇到含逗号、换行符或双引号的字段,只要原始 CSV 正确转义(如
"Smith, John"),reader能自动解析
用 csv.writer 写入 CSV 文件
写入前先创建 writer 对象,再逐行调用 writer.writerow() 或批量用 writer.writerows()。
- 推荐始终传入
newline=''参数(尤其在 Windows 上),否则可能多出空行 - 字段中含特殊字符(如逗号、引号)时,
writer默认自动加双引号并转义,无需手动处理 - 如需自定义分隔符(如用制表符)、引号规则或编码,可通过
dialect或参数控制,例如delimiter=';'或quoting=csv.QUOTE_ALL
用 csv.DictReader / DictWriter 处理带表头的数据
当 CSV 含明确列名时,字典方式更直观,避免靠索引取值出错。
-
DictReader(f)自动把首行当 key,后续每行返回OrderedDict(Python 3.7+ 普通 dict 也保持顺序) -
DictWriter(f, fieldnames=['name', 'age'])需显式传入字段名列表;写入前必须调用writeheader()输出表头 - 缺失字段会写为空字符串,多余字段被忽略——可结合
restval和extrasaction控制行为
常见问题与注意事项
CSV 看似简单,实操中容易踩坑:
-
编码错误:中文乱码多因未指定
encoding='utf-8-sig'(Windows 记事本保存的 CSV 常带 BOM) -
换行符干扰:字段内含换行符时,必须用双引号包裹该字段,且文件需用
newline=''打开 -
数字被当字符串:
csv模块不做类型推断,需手动转换,如int(row[1])或float(row[2]) -
大文件处理:避免
list(reader)一次性加载,应边读边处理;超大数据建议改用pandas.read_csv(chunksize=...)
# excel
# python
# windows
# 编码
# 大数据
# 工具
# 中文乱码
# csv
# win
# 常见问题
# 可迭代对象
# red
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何配置任务调度?(Cron Job示例)
香港服务器部署网站为何提示未备案?
java获取注册ip实例
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
成都网站制作公司哪家好,四川省职工服务网是做什么用?
iOS中将个别页面强制横屏其他页面竖屏
大型企业网站制作流程,做网站需要注册公司吗?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何登录建站主机?访问步骤全解析
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
EditPlus中的正则表达式 实战(2)
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
制作旅游网站html,怎样注册旅游网站?
Laravel如何实现模型的全局作用域?(Global Scope示例)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
香港服务器WordPress建站指南:SEO优化与高效部署策略
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
phpredis提高消息队列的实时性方法(推荐)
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何确保西部建站助手FTP传输的安全性?
如何在阿里云香港服务器快速搭建网站?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel如何处理文件下载请求?(Response示例)
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何在VPS电脑上快速搭建网站?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
如何在不使用负向后查找的情况下匹配特定条件前的换行符
node.js报错:Cannot find module 'ejs'的解决办法
Laravel安装步骤详细教程_Laravel环境搭建指南
如何正确选择百度移动适配建站域名?
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
如何在新浪SAE免费搭建个人博客?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
,网页ppt怎么弄成自己的ppt?
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel如何实现一对一模型关联?(Eloquent示例)
Thinkphp 中 distinct 的用法解析
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Java遍历集合的三种方式
大连 网站制作,大连天途有线官网?

