Python 进阶(九):CSV 文件读写(csv模块)

news2024/11/18 17:24:13

在这里插入图片描述

《Python入门核心技术》专栏总目录・点这里

文章目录

    • 1. CSV文件简介
    • 2. 导入csv模块
    • 3. 读取CSV文件
      • 3.1 打开CSV文件
      • 3.2 逐行读取数据
      • 3.3 获取每行的字段值
    • 4. 写入CSV文件
      • 4.1 打开CSV文件
      • 4.2 写入数据行
    • 5. 其他操作
      • 5.1 指定分隔符
      • 5.2 读取和写入字典格式
      • 5.3 自定义引号字符
    • 6. 总结


大家好,我是水滴~~

Python自带的csv模块为处理CSV文件提供了简单和强大的功能。本教程将引导您逐步学习如何使用Python的csv模块读取、写入和操作CSV文件。无论您是初学者还是有经验的开发者,本教程都将帮助您掌握CSV文件处理的基本技巧。

1. CSV文件简介

在开始之前,让我们简要了解一下CSV文件的基本概念。

CSV(Comma Separated Values,逗号分隔值)文件是一种常见的数据存储格式,被广泛应用于各种领域,包括数据分析、数据交换、数据库导入/导出等。CSV文件以纯文本形式存储表格数据,字段之间使用逗号进行分隔。

以下是CSV文件的一些基本特点和约定:

  • 字段分隔符:CSV文件中的字段通常使用逗号作为分隔符,但有时也可以使用其他字符,如分号、制表符等。选择逗号作为分隔符的原因是它在大多数情况下易于使用和解析。

  • 字段值:CSV文件中的每个字段都表示数据表中的一个列,每行数据都对应于表中的一行。字段值可以是文本、数字、日期等各种数据类型。

  • 引号:如果字段值本身包含字段分隔符(逗号)或换行符,通常会使用引号将该字段值括起来,以确保它被正确解析。常见的引号字符包括双引号(")和单引号(')。

  • 头部行:通常,CSV文件的第一行被视为头部行,包含列名或字段的描述信息。头部行可以帮助我们理解和解释数据。

  • 换行符:CSV文件中的每行数据通常以换行符(如回车符或换行符)结束。

下面是一个CSV文件的示例,其数据内容如下:

姓名,语文成绩,数字成绩,英文成绩
张三,98,100,80
李四,100,100,98
王五,90,80,100

使用Office工具打开,该CSV呈现的内容如下:

在这里插入图片描述

2. 导入csv模块

要使用Python的csv模块,首先需要导入它。在代码中添加以下行:

import csv

3. 读取CSV文件

csv模块提供了读取CSV文件的功能。下面是读取CSV文件的步骤:

3.1 打开CSV文件

使用open()函数打开CSV文件,并将文件对象分配给一个变量。

with open('data.csv', 'r') as file:
    csv_reader = csv.reader(file)

3.2 逐行读取数据

通过循环迭代csv_reader对象,可以逐行读取CSV文件的内容。

    for row in csv_reader:
        print(row)

3.3 获取每行的字段值

每一行数据都被表示为一个列表,其中包含CSV文件中该行的字段值。可以通过索引获取每个字段的值。

    for row in csv_reader:
        name = row[0]
        age = row[1]
        city = row[2]
        print(name, age, city)

4. 写入CSV文件

CSV模块还提供了写入CSV文件的功能。下面是写入CSV文件的步骤:

4.1 打开CSV文件

使用open()函数打开CSV文件,并将文件对象分配给一个变量。

with open('data.csv', 'w', newline='') as file:
    csv_writer = csv.writer(file)

4.2 写入数据行

使用writerow()方法将数据行写入CSV文件。

    csv_writer.writerow(['姓名', '年龄', '城市'])
    csv_writer.writerow(['张三', '30', '北京'])
    csv_writer.writerow(['李四', '25', '青岛'])

5. 其他操作

CSV模块还提供了其他一些功能,例如指定不同的分隔符、读取和写入字典格式、自定义引号字符等。在本节中,我们将简要介绍这些功能。

5.1 指定分隔符

默认情况下,CSV模块使用逗号作为字段的分隔符。但是,您可以通过设置delimiter参数来使用其他分隔符,如制表符。

csv_reader = csv.reader(file, delimiter='\t')

5.2 读取和写入字典格式

CSV模块还提供了csv.DictReadercsv.DictWriter类,用于读取和写入字典格式的CSV文件。字典格式的CSV文件使用字段名称作为列的标识符,而不是索引值。

with open('data.csv', 'r') as file:
    csv_dict_reader = csv.DictReader(file)
    for row in csv_dict_reader:
        name = row['姓名']
        age = row['年龄']
        city = row['城市']
        print(name, age, city)

5.3 自定义引号字符

如果CSV文件中的字段值包含分隔符或换行符,可以使用quotechar参数来指定自定义引号字符。

csv_writer = csv.writer(file, quotechar="'")

6. 总结

在本教程中,我们详细介绍了如何使用Python的CSV模块读取、写入和操作CSV文件。您学会了打开CSV文件、逐行读取数据、获取字段值、写入数据行以及其他一些功能。CSV模块是处理CSV文件的强大工具,使您能够轻松地进行数据处理和分析。

无论是数据科学家、数据分析师还是开发者,掌握CSV模块的使用对于处理和交换数据都是至关重要的。希望本教程对您有所帮助,并在您的Python项目中成功应用CSV文件处理技巧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树的基本操作(数据结构)

树的创建 //结构结点 typedef struct Node {int data;struct Node *leftchild;struct Node *rightchild; }*Bitree,BitNode;//初始化树 void Create(Bitree &T) {int d;printf("输入结点(按0为空结点):");scanf("%d",&d);if(d!0){T (Bitree)ma…

Python学习笔记——存储容器

食用说明:本笔记适用于有一定编程基础的伙伴们。希望有助于各位! 列表 列表类似数组,其中可以包含不同类型的元素,写法如下: list1 [Google, Runoob, 1997, 2000] list2 [1, 2, 3, 4, 5 ] list3 ["a", …

Speech | .flac文件转换为.wav文件,并进行重采样(Python脚本)

把flac结尾的,替换为wav文件,然后对wav文件进行重采样(48000->22050),可以更换采样率,运行后保存为新的地址,所有文件都在同一文件夹下(保证能运行)。 # 把flac结尾的…

java中使用sqlserver调用MySQL数据库的表进行操作

项目场景: 部分需求需要对不同的数据库进行操作,我这里是一个小程序里调用了另一个数据 解决方案: 目前我个人使用了两个方案解决的,看自己觉得哪个方便 方案一: 使用JDBC 新建一个实体类,相当于mapper.xml了,然后在这个实体类里进行数据库的连接操作…

2023年中国气体压缩机市场规模及产量分析[图]

气体压缩机是把机械能转换为气体压力能的一种动力装置,常用于风动工具提供气体动力,在石油化工、钻采、冶金等行业也常用于压送氧、氢、氨、天然气、焦炉煤气、惰性气体等介质。常见的气体压缩机包括离心式压缩机、螺杆式压缩机、往复式压缩机等。 气体…

VUE:可收缩工具栏

作者:CSDN @ _乐多_ 本文记录了一个vue可伸缩工具栏组件,代码即插即用。 只需要新增函数名并且填函数体就可以。 效果如下图所示, 文章目录 一、Vue代码一、Vue代码 <template><div class="ToolBar"><div class=

全球范围内先进封装设备划片机市场将迎来新的发展机遇

随着半导体工艺的不断发展&#xff0c;先进封装技术正在迅速发展&#xff0c;封装设备市场也将迎来新的发展机遇。作为先进封装设备中的关键设备之一&#xff0c;划片机的发展也备受关注。 划片机是用于切割晶圆或芯片的设备&#xff0c;其精度和稳定性直接影响到封装产品的质量…

Vue_组件详解

Vue_组件详解 初识组件组件组成组件的根节点父子组件 组件注册全局注册局部注册 组件间数据传递Props&#xff08;父 ----> 子&#xff09;props声明注意问题 组件间数据传递emit&#xff08;子 ----> 父&#xff09; 初识组件 组件&#xff08;Component&#xff09;&a…

WordPress导航主题蘑菇导航源码

蘑菇导航的列表页有两种风格&#xff0c;分别对应宽屏、窄屏。可以点击 文章。博客查看演示。文章页也是如此&#xff0c;这两种风格可以在后台设置。 本站菜单中的 VIP解析、音乐、图床&#xff0c;是单独的源码&#xff0c;不包含在本次主题中。后期看大家的要求&#xff0c…

Python中的循环语句Cycle学习

二、循环语句 1、什么是循环语句 一般编程语言都有循环语句,为什么呢? 那就问一下自己,我们弄程序是为了干什么? 那肯定是为了方便我们工作,优化我们的工作效率啊。 而计算机和人类不同,计算机不怕苦也不怕累,也不需要休息,可以一直做。 你要知道,计算机最擅长就…

【Java】栈和队列的模拟实现(包括循环队列)

异常为空栈异常&#xff1a; public class EmptyStackException extends RuntimeException {public EmptyStackException(){}public EmptyStackException(String msg){super(msg);}}循环队列&#xff1a; class MyCircularQueue {public int[] elem;public int front;//队…

绿色低碳,数字为先:万应低代码推动能源资产管理优化

10月7日&#xff0c;湘江新区经济发展局发布关于印发《湖南湘江新区推进碳达峰碳中和三年行动工作方案及责任分工&#xff08;2023-2025&#xff09;》的通知&#xff0c;把碳达峰碳中和工作纳入湖南湘江新区经济社会发展和生态文明建设整体布局。 随着科学技术的不断发展&…

10月第2周榜单丨飞瓜数据B站UP主排行榜榜单(B站平台)发布!

飞瓜轻数发布2023年10月9日-10月15日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营…

线程池线程保活以及动态更新线程数

基本知识 各位大佬在面试过程肯定会被问到线程池或者多线程的问题&#xff0c;例如&#xff1a; 线程池核心参数及其作用线程池添加任务的执行顺序任务队列以及任务的拒绝策略等等 这些问题是相信稍微研究过线程池JDK源码的都能掌握。有兴趣的可以参数这篇博文。 在进入今天…

去除照片中多余人物方法分享-这些方法快收藏起来

拍照时经常会碰到一些意外的情况&#xff0c;比如不小心捕捉到了一些不需要的人或物&#xff0c;这会影响照片的美观效果&#xff0c;因此学习如何去除照片中多余人物就显得特别重&#xff0c;下面分享一些常用的去除照片中多余人物的方法&#xff0c;如果你也感兴趣的话&#…

使用按钮从 SAP 系统内打开 Excel 文件

了解如何通过 SAP 屏幕上创建的按钮打开所需的 Excel 文件。为了演示这一点&#xff0c;将指导您完成以下步骤。 使用 del 命令删除 SAP 上不必要的元素添加一个按钮&#xff0c;单击后打开弹出窗口创建一个函数来选择 excel 文件创建打开所需 excel 文件的函数 定制 登录 S…

Linux下程序(C语言)实现对文件的复制

目标&#xff1a; 使用系统调用实现cp命令。 原理&#xff1a; 使用系统调用fopen打开文件&#xff0c;使用fgets()从文件读数据&#xff0c;使用fputs() 向文件写数据。 linux 文件 创建命令为 vi (文件名&#xff09;.c 文件源码&#xff1a; #include<stdio.h>…

linux安装达梦数据库(命令行安装)

安装达梦数据库 创建安装用户 1,创建安装用户组dinstall [rootdmDMServer1 ~]# groupadd -g 12345 dinstallgroupadd : 创建组 -g : 指定组id&#xff08;GID&#xff09; 12345&#xff1a; 指定的组名称 dinstall &#xff1a; 组名 2,创建安装用户dmdba [rootdmDMSe…

如何使用 Python 在终端中创建令人惊叹的图形

说明 在当今数据驱动的世界中&#xff0c;可视化或图形确实表达了一个胜过千言万语的故事。可视化提供了快速有效的通信媒体来传达数据&#xff0c;如果与文本或表格共享&#xff0c;则可能难以理解。 虽然有许多强大的可视化工具可用&#xff0c;但有时我们需要一种快速简便的…

SpringBoot的多环境切换(已废除)

profile是Spring对不同环境提供不同配置功能的支持&#xff0c;可以通过激活不同的环境版本&#xff0c;实现快速切换环境 application-dev.yaml server:port: 8082 application-test.yaml server:port: 8081 我们在主配置文件编写的时候&#xff0c;文件名可以是 applicat…