Python中读写CSV文件的深入探讨

news2025/1/21 17:59:17

目录

一、引言

二、如何读取CSV文件

三、如何写入CSV文件

四、处理大型CSV文件

五、总结


一、引言

CSV(Comma-Separated Values)文件是一种常见的逗号分隔值格式的文件,常用于存储和传输数据。在Python中,我们可以使用内置的csv模块来读写CSV文件。通过使用csv模块,我们可以轻松地读取和写入CSV文件中的数据,并对数据进行处理和分析。

二、如何读取CSV文件

在Python中,我们可以使用csv模块的csv.reader()函数来读取CSV文件。以下是一个简单的示例代码,演示了如何读取一个名为“example.csv”的CSV文件:

import csv  
  
# 打开文件并创建csv.reader对象  
with open('example.csv', 'r') as f:  
    reader = csv.reader(f)  
  
    # 遍历csv.reader对象中的每一行数据  
    for row in reader:  
        print(row)

上述代码将打开名为“example.csv”的文件,并创建一个csv.reader对象。然后,通过遍历csv.reader对象中的每一行数据,我们可以读取文件中的所有行。每一行数据将作为一个列表返回,其中列表中的每个元素是该行中的一个字段值。

如果CSV文件中包含标题行,我们可以通过使用next()函数来跳过标题行,例如:

import csv  
  
# 打开文件并创建csv.reader对象  
with open('example.csv', 'r') as f:  
    reader = csv.reader(f)  
  
    # 跳过标题行  
    next(reader)  
  
    # 遍历csv.reader对象中的每一行数据  
    for row in reader:  
        print(row)

在上述代码中,我们使用next()函数来跳过标题行,然后遍历剩余的行。

如果CSV文件中的字段值包含逗号或其他特殊字符,可以使用csv.reader()函数的quoting参数来指定引号字符和分隔符。例如,如果字段值用双引号括起来,并且使用制表符作为分隔符,则可以使用以下代码读取该文件:

import csv  
  
# 打开文件并创建csv.reader对象,指定引号字符和分隔符  
with open('example.csv', 'r') as f:  
    reader = csv.reader(f, quoting=csv.QUOTE_ALL, delimiter='\t')  
  
    # 遍历csv.reader对象中的每一行数据  
    for row in reader:  
        print(row)

在上述代码中,我们将引号字符设置为双引号,并将分隔符设置为制表符。这样就可以正确地解析包含逗号或其他特殊字符的字段值。

三、如何写入CSV文件

在Python中,我们可以使用csv模块的csv.writer()函数来写入CSV文件。以下是一个简单的示例代码,演示了如何将一个名为“example.csv”的CSV文件写入到内存中,并使用csv.writer()函数将数据写入到该文件中:

import csv  
  
# 将数据存储到内存中  
data = [  
    ['Name', 'Age', 'City'],  
    ['John Doe', 30, 'New York'],  
    ['Jane Smith', 25, 'San Francisco'],  
    ['Bob Johnson', 40, 'Chicago']  
]  
  
# 创建一个csv.writer对象  
writer = csv.writer(open('example.csv', 'w', newline=''))  
  
# 写入数据到csv.writer对象中  
for row in data:  
    writer.writerow(row)

在上述代码中,我们首先定义了一个包含数据的二维列表data。然后,我们使用csv.writer()函数创建一个csv.writer对象,并将其绑定到打开的文件“example.csv”上。接下来,我们使用writerow()方法将每一行数据写入到csv.writer对象中。最后,我们使用close()方法关闭csv.writer对象和文件。

如果要将其他类型的数据写入到CSV文件中,可以使用csv.DictWriter()函数创建一个字典写入器对象。csv.DictWriter()函数接受三个参数:文件对象、字段名和引号字符。以下是一个示例代码,演示了如何使用csv.DictWriter()函数将字典数据写入到CSV文件中:

import csv  
  
# 定义字段名  
fields = ['Name', 'Age', 'City']  
  
# 定义数据字典  
data = [  
    {'Name': 'John Doe', 'Age': 30, 'City': 'New York'},  
    {'Name': 'Jane Smith', 'Age': 25, 'City': 'San Francisco'},  
    {'Name': 'Bob Johnson', 'Age': 40, 'City': 'Chicago'}  
]  
  
# 创建一个csv.DictWriter对象  
writer = csv.DictWriter(open('example.csv', 'w'), fieldnames=fields)  
  
# 写入数据到csv.DictWriter对象中  
writer.writeheader()  # 写入标题行  
for row in data:  
    writer.writerow(row)  # 写入数据行

四、处理大型CSV文件

如果需要处理大型CSV文件,我们可以使用pandas库,它提供了更高效的处理方式。pandas库中的read_csv()函数可以读取大型CSV文件,并将其转换为DataFrame对象,以便进行数据处理和分析。以下是一个示例代码,演示了如何使用pandas库处理大型CSV文件:

import pandas as pd  
  
# 读取大型CSV文件  
df = pd.read_csv('large_file.csv')  
  
# 对数据进行处理和分析  
# ...  
  
# 将结果写入新的CSV文件中  
df.to_csv('new_file.csv', index=False)

在上述代码中,我们首先使用pd.read_csv()函数读取名为“large_file.csv”的大型CSV文件,并将其存储在DataFrame对象df中。然后,我们可以对df对象进行数据处理和分析。最后,我们使用to_csv()方法将处理后的数据写入到新的CSV文件中。

五、总结

本文介绍了Python中读写CSV文件的方法。通过使用内置的csv模块或第三方库pandas,我们可以轻松地读取和写入CSV文件中的数据,并对数据进行处理和分析。使用这些技术,我们可以有效地处理各种类型的CSV文件,包括小型、大型以及包含特殊字符或格式的CSV文件。

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

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

相关文章

WindowsServer服务器系列:定时备份 MySQL

一、编写脚本 echo 取日期、时间变量值 set yy%date:~0,4% set mm%date:~5,2% set dd%date:~8,2% if /i %time:~0,2% lss 10 set hh0%time:~1,1% if /i %time:~0,2% geq 10 set hh%time:~0,2% set mn%time:~3,2% set ss%time:~6,2% set date%yy%%mm%%dd% set time%hh%%mn%%ss…

GIT GUI使用

文章目录 一、新建本地仓库二、推送(push) 一、新建本地仓库 在空白处右键,找到GIT GUI here, 如果没有仓库,出现的是这样的: 如果有仓库,在本地仓库里打开就是这样的: 新建本地…

外包干了6个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

C语言面试之旅:掌握基础,探索深度(面试实战之单片机——IO)

梦想和自由一样,都有代价,但都值得。 ----小新 引言 单片机是一种微控制器,它包含一个处理器、存储器、定时器和I/O端口等。I/O端口是单片机与外部设备进行通信的接口。通过I/O端口,外部设备可以输入和输出数据到单片机中。 在单…

【数据结构】——二叉树特点

前言:我们前面已经了解了二叉树的一些概念,那么我们今天就来了解下二叉树的遍历实现和一些性质。 二叉树的遍历方式有三种:前序,中序,后序。 前序:先根节点,再左子树,最后右子树。 中…

SpringSecurity工作原理(一)

实现功能就是继承这几个对应功能的类。 大概工作流程 Spring Security 的过滤器(Filters)和拦截器(Interceptors)是 Spring Security 框架中用于保护 web 应用安全的重要组件。它们在处理 HTTP 请求时扮演不同的角色&#xff0c…

Linux自启服务提示:systemd[1]: *.service: main process exited, code=exited, status=1问题

这两天一直在沉迷于配脚本,由于服务器很多,所以我都是从一台服务器上配置好的脚本直接copy到另一台服务器,按说完全一样的脚本一样的操作,那么应该是一样的执行结果 but, Gul’dan,代…我重启服务器后服务并没有正常启…

k8s官方镜像代理加速

背景 大家可能在云原生领域需要部署周边的一些生态组件时,在国内遇到无法正常拉取镜像,显得就有点苦恼,不过没关系,常见的${{ registry_name }} 例如 “gcr.io”,“registry.k8s.io” Failed to pull image “registry…

【c】杨辉三角

下面介绍两种方法 1.利用上面性质的第五条&#xff0c;我们可以求各行各列的组合数 2.利用上面性质的第7条&#xff0c;我们可以用数组完成 下面附上代码 1. #include<stdio.h> void fact(int n ,int m )//求组合数 {long long int sum11;long long int sum21;int a…

AI Pika 生成进击的巨人动漫分镜案例

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级&#xff0c;包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画&#xff0c;动漫&#xff0c;卡通和电影风格。…

跳水比赛(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

从零开发短视频电商 Jmeter压测示例模板详解(无认证场景)

文章目录 添加线程组添加定时器添加HTTP请求默认值添加HTTP头管理添加HTTP请求添加结果断言响应断言 Response AssertionJSON断言 JSON Assertion持续时间断言 Duration Assertion 添加察看结果树添加聚合报告添加表格察看结果参考 以压测百度搜索为例 https://www.baidu.com/s…

面试多线程八股文十问十答第一期

面试多线程八股文十问十答第一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.ThreadLocal如何实现线程安全 Java的ThreadLocal是一个线程本地变量&#xff0…

Python中字符串拼接及其应用场景

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 字符串拼接是Python中常见而重要的操作&#xff0c;它涉及到将多个字符串连接成一个字符串。本文将深入探讨Python中字符串拼接的不同方式、性能比较、以及在实际应用中的场景和最佳实践。 常见的字符串拼接方法…

【JUC】二十一、CAS比较并交换

文章目录 1、初体验2、CAS概述3、Unsafe类4、Unsafe汇编5、原子引用AutomicReference6、手写自旋锁SpinLock7、CAS的两大缺点8、AtomicStampedReference类解决ABA问题 1、初体验 没有CAS时&#xff0c;多线程环境下不使用原子类保证线程安全&#xff0c;比如i&#xff0c;可以…

21章网络通信

21.1——网络程序设计基础 网络程序设计编写得到是与其他计算机进行通信的程序 21.1.1——局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机 21.1.2——网络协议 网络协议规定了计算机之间连接的物理、机械 (网线与网卡的连接规定)、…

云上守沪 | 云轴科技ZStack成功实践精选(上海)

为打造国际数字之都&#xff0c;上海发布数字经济发展“十四五”规划&#xff0c;围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域&#xff0c;加强数据、技术、企业、空间载体等关键要素协同联动&#xff0c;加快进行数字经济发展布局&#xff1b;加快基础软件…

Linux环境下的MySQL安装

文章目录 前提说明1.卸载内置环境2.检查系统安装包3.卸载这些默认安装包4.获取MySQL官方yum源5.安装MySQLyum源&#xff0c;对比前后yum源6.查看yum源是否生效7.安装MySQL服务8.查看相对应的配置文件9.启动服务10.查看启动服务11.登录方法一12.登录方法二13.登录方法三14.设置开…

护理简历自我评价15篇

自我评价示例1&#xff1a; 我性格开朗&#xff0c;上进心强&#xff0c;做事不马虎&#xff0c;有良好的思想道德&#xff0c;注重集体荣誉感。我具备强大的护理技能和团队协作精神&#xff0c;能够在高压环境下保持冷静&#xff0c;积极应对挑战。我期待着在医疗领域发挥我的…

MySQL数据库与其管理工具Navicat

这里介绍MySQL数据库和Navicat的使用 1.下载MySQL数据库及MySQL客户端管理工具Navicat 登录www.mysql.com下载MySQL 登录www.navicat.com.cn/download下载客户端管理工具 2.启动MySQL数据库服务器 以管理员身份打开命令提示窗口 找到mysql的bin目录 输入初始化命令mysqld…