Python入门:Python3 CSV模块全面学习教程
Python入门Python3 CSV模块全面学习教程Python入门Python3 CSV模块全面学习教程这篇 Python csv 模块教程面向从入门到实战的学习者详细讲解无需额外安装的 csv 模块用法。核心内容包括 CSV 文件的两种读取方式csv.reader 将行解析为列表需通过索引访问csv.DictReader 解析为字典按表头字段访问更直观、两种写入方式csv.writer 支持单行 writerow 与多行 writerowscsv.DictWriter 需指定 fieldnames 并调用 writeheader 写表头且强调 Windows 下加 newline‘’ 防空行还介绍了自定义方言功能以简化特殊格式 CSV 的重复配置搭配 “筛选年龄大于 28 岁用户并导出” 的实战案例并解答空行、字段错乱等常见问题最后提及复杂场景可拓展 pandas 库帮助读者系统掌握 csv 模块在数据处理中的应用。前言Python作为一门简洁、易读、功能强大的编程语言其基础语法是入门学习的核心。掌握好基础语法能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者都将通过清晰的讲解、丰富的实例和实战项目逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用如数据分析、Web开发、自动化以及面向对象高级特性最终具备独立开发能力和解决复杂问题的思维高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。 点击进入Python入门专栏Python凭借简洁易读的语法是零基础学习编程的理想选择。本专栏专为初学者设计系统讲解Python核心基础变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目助你快速掌握编程思维打下坚实根基迈出自动化办公、数据分析或Web开发的第一步。 点击进入Python小游戏实战专栏 寓教于乐用Python亲手打造经典小游戏本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面如Pygame等关键技能将枯燥的代码学习转化为可见的成果让学习编程充满乐趣与成就感快速提升实战能力。 点击进入Python小工具实战专栏告别重复劳动用Python打造效率神器本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库通过真实场景案例快速掌握自动化脚本编写技巧解放双手显著提升工作与生活效率让代码真正服务于你的日常。 点击进入Python爬虫实战专栏解锁网络数据宝库本专栏手把手教你使用Python核心库如requests、BeautifulSoup、Scrapy构建高效爬虫。从基础网页解析到动态页面抓取、数据存储CSV/数据库、反爬策略应对及IP代理使用通过实战项目如电商比价、新闻聚合、图片采集、舆情监控掌握合法合规获取并利用网络数据的核心技能让数据成为你的超能力。 点击进入Python项目实战专栏告别碎片化学习挑战真实项目本专栏精选Web应用开发Flask/Django、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程深入掌握工程化开发、代码复用、调试排错与团队协作核心能力积累高质量作品集真正具备解决复杂问题的Python实战经验。 前篇文章咱们练习了 Python3 re模块全面学习教程 如果忘记了可以去重温一下不停的重复敲击基础代码有助于让你更加熟练掌握一门语言。今天咱们继续学习 Python3 CSV模块全面学习教程下面开始吧在日常数据处理中CSVComma-Separated Values文件绝对是“常客”——它以纯文本形式存储表格数据结构简单、兼容性强常用来实现Excel、数据库、Python脚本之间的数据交换。比如爬虫爬取的用户数据、分析工具导出的统计结果很多都会存为CSV格式。Python自带的csv模块专门用来处理CSV文件能帮我们自动解决分隔符识别、引号转义、换行符兼容等“麻烦事”不用手动写字符串分割逻辑。今天这篇教程就从基础到实战带大家彻底掌握csv模块的用法。一、环境准备无需额外安装csv是Python标准库的一部分不需要用pip安装直接在代码里import csv就能使用兼容性覆盖Python 3.x所有版本开箱即用。二、读取CSV文件3种常用方式读取CSV是最常见的需求csv模块提供了「基础读取」和「字典式读取」两种核心方式我们分别来看。2.1 基础读取用csv.readercsv.reader会把CSV文件的每一行解析成一个列表通过索引就能访问对应列的数据。示例代码读取data.csv假设data.csv内容如下第一行为表头Name,Age,City Alice,30,New York Bob,25,Los Angeles Charlie,35,Chicago读取代码importcsv# 1. 用with语句打开文件自动关闭文件避免资源泄漏# moder只读模式encodingutf-8避免中文乱码newline兼容Windows换行file_pathos.path.join(os.path.dirname(__file__),data.csv)withopen(file_path,moder,encodingutf-8,newline)asfile:# 2. 创建csv.reader对象csv_readercsv.reader(file)# 3. 逐行读取可直接用for循环迭代csv_readerforindex,rowinenumerate(csv_reader):# 第0行是表头单独处理可选ifindex0:print(f表头{row})else:# row是列表通过索引访问列0Name1Age2Cityprint(f第{index}行姓名{row[0]}年龄{row[1]}城市{row[2]})运行效果关键参数说明参数作用示例值delimiter指定字段分隔符默认是逗号,制表符\tTSV文件skipinitialspace忽略分隔符后的空格默认FalseTruequotechar包裹特殊字段的字符默认比如读取TSV文件制表符分隔只需加delimiter\twithopen(data.tsv,moder,encodingutf-8,newline)asfile:# 指定分隔符为制表符csv_readercsv.reader(file,delimiter\t)forrowincsv_reader:print(row)2.2 字典式读取用csv.DictReader推荐如果CSV有表头csv.DictReader会把每一行解析成一个字典键是表头名称值是对应字段内容——不用记列索引直接用row[Name]访问更直观。示例代码还是读取上面的data.csvimportcsvwithopen(data.csv,moder,encodingutf-8,newline)asfile:# 创建DictReader对象自动识别第一行为表头dict_readercsv.DictReader(file)# 1. 查看表头通过fieldnames属性print(f表头字段{dict_reader.fieldnames})# 输出[Name, Age, City]# 2. 逐行读取row是字典forrowindict_reader:# 直接通过表头字段访问数据无需记索引print(f姓名{row[Name]}年龄{row[Age]}城市{row[City]})优势场景处理表头明确的CSV如Excel导出的文件代码可读性更高后期修改字段时不用调整索引。三、写入CSV文件2种核心方式写入CSV时要注意newline参数Windows系统必加否则会生成空行以及“单行写入”和“多行写入”的区别。3.1 基础写入用csv.writercsv.writer通过writerow()单行和writerows()多行写入数据适合无表头或简单场景。示例1写入单行数据importcsv# 要写入的数据列表格式single_row[David,28,Houston]withopen(output.csv,modew,encodingutf-8,newline)asfile:# 创建csv.writer对象csv_writercsv.writer(file)# 先写入表头可选csv_writer.writerow([Name,Age,City])# 写入单行数据csv_writer.writerow(single_row)示例2批量写入多行数据如果有多个行数据用writerows()更高效避免循环调用writerow()importcsv# 多行数据列表的列表multi_rows[[Name,Age,City],# 表头[Ella,32,Boston],[Frank,26,Seattle],[Grace,29,Miami]]withopen(output_batch.csv,modew,encodingutf-8,newline)asfile:csv_writercsv.writer(file)# 批量写入所有行csv_writer.writerows(multi_rows)3.2 字典式写入用csv.DictWriter和DictReader对应DictWriter可以把字典数据写入CSV需要先指定表头字段fieldnames再调用writeheader()写入表头。示例代码importcsv# 要写入的字典数据列表的字典dict_data[{Name:Henry,Age:31,City:Phoenix},{Name:Ivy,Age:27,City:Denver},{Name:Jack,Age:33,City:Portland}]# 1. 定义表头字段必须和字典的键对应fieldnames[Name,Age,City]withopen(output_dict.csv,modew,encodingutf-8,newline)asfile:# 2. 创建DictWriter对象指定表头dict_writercsv.DictWriter(file,fieldnamesfieldnames)# 3. 写入表头必加否则只有数据dict_writer.writeheader()# 4. 写入数据单行或多行# 方式1逐行写入forrowindict_data:dict_writer.writerow(row)# 方式2批量写入用writerows()# dict_writer.writerows(dict_data)注意点fieldnames必须包含所有字典的键否则会报错如果字典有额外键超出fieldnames的部分会被忽略。四、csv模块核心工具方言Dialect如果经常处理特殊格式的CSV比如固定用|分隔、不使用引号可以用「方言Dialect」统一配置避免重复写参数。4.1 注册自定义方言用csv.register_dialect()定义方言指定分隔符、引号规则等importcsv# 注册一个名为my_dialect的方言# delimiter|用竖线分隔quotingcsv.QUOTE_NONE不使用引号包裹字段csv.register_dialect(my_dialect,delimiter|,quotingcsv.QUOTE_NONE,skipinitialspaceTrue)4.2 使用方言读取/写入之后读取文件时只需指定dialectmy_dialect即可# 用自定义方言读取特殊CSVwithopen(special_data.csv,moder,encodingutf-8,newline)asfile:# 无需重复写delimiter等参数csv_readercsv.reader(file,dialectmy_dialect)forrowincsv_reader:print(row)# 查看所有已注册的方言print(已注册方言,csv.list_dialects())# 输出包含my_dialect# 删除不再使用的方言避免占用资源csv.unregister_dialect(my_dialect)常用内置方言Python默认提供了一些方言比如excel默认CSV标准格式、excel-tabTSV格式制表符分隔直接使用即可# 用内置方言读取TSV文件withopen(data.tsv,moder,encodingutf-8,newline)asfile:csv_readercsv.reader(file,dialectexcel-tab)forrowincsv_reader:print(row)五、实战案例CSV数据筛选与导出结合前面的知识做一个实用案例读取原始CSV筛选出“年龄大于28岁”的用户然后导出到新CSV。原始数据data.csvName,Age,City Alice,30,New York Bob,25,Los Angeles Charlie,35,Chicago David,28,Houston Ella,32,Boston实战代码importcsv# 步骤1读取原始CSV筛选数据filtered_data[]withopen(data.csv,moder,encodingutf-8,newline)asread_file:dict_readercsv.DictReader(read_file)# 保存表头后续写入需要headerdict_reader.fieldnames# 筛选年龄28的用户注意CSV读取的Age是字符串需转intforrowindict_reader:ifint(row[Age])28:filtered_data.append(row)# 步骤2将筛选后的数据写入新CSVwithopen(filtered_data.csv,modew,encodingutf-8,newline)aswrite_file:dict_writercsv.DictWriter(write_file,fieldnamesheader)# 写入表头和数据dict_writer.writeheader()dict_writer.writerows(filtered_data)print(筛选完成新文件filtered_data.csv)print(筛选结果,filtered_data)输出结果filtered_data.csvName,Age,City Alice,30,New York Charlie,35,Chicago Ella,32,Boston六、常见问题与解决方案Windows下写入CSV出现空行解决方案打开文件时加newline核心如open(output.csv, w, newline, ...)。CSV字段包含逗号或引号读取错乱解决方案csv模块会自动处理——如果字段包含逗号会用quotechar默认包裹读取时会正确解析无需手动处理。如何读取大型CSVGB级解决方案csv.reader和DictReader是迭代读取不会一次性加载所有数据到内存直接用for循环逐行处理即可无需担心内存溢出。七、总结与拓展csv模块是Python处理CSV文件的“瑞士军刀”核心优势是简单、高效、无需第三方依赖适合中小型CSV文件的读写。今天我们学了基础读写csv.reader/csv.writer字典式读写csv.DictReader/csv.DictWriter推荐方言配置统一处理特殊格式CSV实战案例数据筛选与导出。如果需要处理更复杂的场景如大型CSV、数据透视、合并多个CSV可以结合pandas库pandas.read_csv()/pandas.to_csv()它在csv模块基础上做了更多优化支持更多数据格式和分析功能感兴趣的同学可以进一步学习~如果这篇教程对你有帮助欢迎点赞收藏有问题可以在评论区留言讨论下一篇咱们学习 Python入门Python3 threading模块全面学习教程附录扩展学习资源官方资源Python官网https://www.python.orgPyPIhttps://pypi.org查找第三方库安装包等相关文件另附带pycharm工具网盘下载地址https://pan.quark.cn/s/649af731037c学习资料视频和文档资源网盘下载地址 https://pan.quark.cn/s/ee16901a8954本专栏特色资源代码资源仓库CSDN专属资源在线获取一对一答疑添加微信与博主在线沟通备注“Python专栏”联系博主xcLeigh 博主全栈领域优质创作者博客专家目前活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台全网拥有几十万的粉丝全网统一IP为xcLeigh。希望通过我的分享让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂尤其对于一些复杂的技术话题他能通过通俗的语言来解释帮助初学者更好地理解。博客通常也会涉及一些实践经验项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者或者在学习一些新的编程语言或框架关注他的文章对你有很大帮助。亲爱的朋友无论前路如何漫长与崎岖都请怀揣梦想的火种因为在生活的广袤星空中总有一颗属于你的璀璨星辰在熠熠生辉静候你抵达。愿你在这纷繁世间能时常收获微小而确定的幸福如春日微风轻拂面庞所有的疲惫与烦恼都能被温柔以待内心永远充盈着安宁与慰藉。至此文章已至尾声而您的故事仍在续写不知您对文中所叙有何独特见解期待您在心中与我对话开启思想的新交流。 关注博主 带你实现畅游前后端 大屏可视化 带你体验酷炫大屏 神秘个人简介 带你体验不一样得介绍 从零到一学习Python 带你玩转Python技术流 前沿应用深度测评 前沿AI产品热门应用在线等你来发掘注本文撰写于CSDN平台,作者xcLeigh所有权归作者所有https://xcleigh.blog.csdn.net/如果相关下载没有跳转请查看这个地址相关链接没有跳转皆是抄袭本文转载请备注本文原地址。 亲码字不易动动小手欢迎点赞 ➕ 收藏如 问题请留言或者关注下方公众号看见后第一时间回复还有海量编程资料等你来领博主看见后一定及时给您答复