Python-csv库进行数据保存和读写

在 Python 中使用 CSV 文件非常简单,Python 提供了内置的 csv 模块来处理 CSV 文件。你可以使用 csv 模块来读取、写入和操作 CSV 文件中的数据。

基础使用

读取 CSV 文件

python
import csv# 打开 CSV 文件进行读取
with open('file.csv', mode='r') as file:reader = csv.reader(file)  # 创建 CSV 读取器对象for row in reader:print(row)  # 逐行打印 CSV 文件中的数据

写入 CSV 文件

python
import csv# 写入数据到 CSV 文件
data = [['Name', 'Age', 'Gender'],['Alice', 25, 'Female'],['Bob', 28, 'Male'],['Cathy', 22, 'Female']
]with open('output.csv', mode='w', newline='') as file:writer = csv.writer(file)  # 创建 CSV 写入器对象writer.writerows(data)  # 将数据写入到 CSV 文件

在这两个示例中,首先需要导入 csv 模块。使用 with open() 打开 CSV 文件并指定文件模式('r' 表示读取,'w' 表示写入)。然后使用 csv.reader()csv.writer() 创建读取器或写入器对象。读取器可以逐行读取 CSV 文件的内容,写入器可以将数据写入到 CSV 文件中。

更多使用技巧

1. 处理不同格式的分隔符

有时 CSV 文件中的字段可能不是用逗号分隔的,可能会使用其他字符作为分隔符,比如制表符 \t。你可以在读取和写入时指定不同的分隔符。

读取不同分隔符的 CSV 文件:

# 使用制表符作为分隔符读取 CSV 文件
with open('file.tsv', mode='r') as file:reader = csv.reader(file, delimiter='\t')  # 指定分隔符为制表符for row in reader:print(row)

写入不同分隔符的 CSV 文件:

# 使用分号作为分隔符写入 CSV 文件
data = [['Name', 'Age', 'Gender'],['Alice', 25, 'Female'],['Bob', 28, 'Male'],['Cathy', 22, 'Female']
]with open('output.csv', mode='w', newline='') as file:writer = csv.writer(file, delimiter=';')  # 指定分隔符为分号writer.writerows(data)

2. 处理包含引号的数据

有些 CSV 文件中的字段可能包含引号,这时在处理时可能会出现问题。你可以指定引号的处理方式,以便正确读取包含引号的字段。

# 处理包含引号的数据
with open('file.csv', mode='r') as file:reader = csv.reader(file, quoting=csv.QUOTE_MINIMAL)  # 指定引号处理方式for row in reader:print(row)

3. 处理文件编码

在处理 CSV 文件时,特别是处理非英文字符时,确保指定文件的正确编码方式,以免出现乱码问题。

# 指定文件编码方式
with open('file.csv', mode='r', encoding='utf-8') as file:reader = csv.reader(file)for row in reader:print(row)

4. 考虑使用 DictReaderDictWriter

除了 csv.reader()csv.writer() 外,csv 模块还提供了 csv.DictReader()csv.DictWriter(),它们可以将每一行数据作为字典进行处理,使用列标题作为字典的键。

# 使用 DictReader 读取 CSV 文件
with open('file.csv', mode='r') as file:reader = csv.DictReader(file)for row in reader:print(row['Name'], row['Age'], row['Gender'])
python
# 使用 DictWriter 写入 CSV 文件
fieldnames = ['Name', 'Age', 'Gender']
data = [{'Name': 'Alice', 'Age': 25, 'Gender': 'Female'},{'Name': 'Bob', 'Age': 28, 'Gender': 'Male'},{'Name': 'Cathy', 'Age': 22, 'Gender': 'Female'}
]with open('output.csv', mode='w', newline='') as file:writer = csv.DictWriter(file, fieldnames=fieldnames)writer.writeheader()writer.writerows(data)

这些技巧可以帮助你更好地使用 csv 模块处理不同格式的 CSV 文件,同时避免一些常见的问题,如分隔符问题、引号处理和文件编码等。

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

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

相关文章

NVM得介绍和详细使用教程

NVM​​​​​​​(Node Version Manager)是一个用于管理多个Node.js版本的工具。它允许您在同一台计算机上轻松地切换和管理不同的Node.js版本。以下是NVM的介绍和详细使用教程: 安装NVM: 首先,您需要在计算机上安装N…

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

前言 我们在开发串口通信程序时,有时候会遇到比如单片机或者传感器发送的数据速度特别快,比如10ms、20ms发送一次,并且每次发送的数据量还比较大,如果按照常规的写法,我们会发现接收的数据还没处理完,新的数据又发送过来了,这就会导致处理数据滞后,软件始终处理的不是…

python树的双亲存储结构

这种存储结构是一种顺序存储结构,采用元素形如“[结点值,双亲结点索引]”的列表表示。通常每个结点有唯一的索引(或者伪地址),根结点的索引为0,它没有双亲结点,其双亲结点的索引为-1。例如,所示的树对应的双…

123. 股票买卖的最佳时机III(2次交易)

题目 题解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 状态定义 dp[i][j][k]代表在第i天,被允许完成j次交易时,持有或者不持有的最大利润。k0代表不持有,k1代表持有dp [[[0 for k in range(2)] for…

医学生秋招攻略,面试时一定要注意这些方面!

医学生别拖了,今年秋招已经过去一波热度了,赶早不赶晚!在筹备第二轮秋招以及明年的春招的医学生一定要注意以下事项。 1.清晰目标 搜集秋招讯息 一定要早点多做准备,想清楚未来的目标,是继续深造还是就业做医生或者是…

FileReader与URL.createObjectURL实现图片、视频上传预览

之前做图片、视频上传预览常用的方案是先把文件上传到服务器,等服务器返回文件的地址后,再把该地址字符串赋给img或video的src属性,这才实现所谓的文件预览。实际上这只是文件“上传后再预览”,这既浪费了用户的时间,也…

java开发合同相关

【点我-这里送书】 本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(…

集合的分类

Python内建的集合类,有有序和无序之分,还有可修改和不可修改之分。 1 有序和无序 有序是说某数据集合中的每个元素都有一个位置信息,通常用index表示,可以借助这种集合类型名和位置信息访问集合里的某元素值,在Pytho…

【开源】基于Vue.js的用户画像活动推荐系统

项目编号: S 061 ,文末获取源码。 \color{red}{项目编号:S061,文末获取源码。} 项目编号:S061,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活…

[Android]使用Git将项目提交到GitHub

如果你的Mac还没有安装Git,你可以通过Homebrew来安装它: brew install git 方式一:终端管理 1.创建本地Git仓库 在项目的根目录下,打开终端(Terminal)并执行以下命令来初始化一个新的Git仓库&#xff1…

vue3-组件传参及计算属性

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-组件传参及计算属性 目录 vue3中的组件传参 1、父传子 2、子传父 toRef 与 toRefs vue3中…

数据结构 查找基本概念

敬请期待。。。 1. 适用于折半查找的表的存储方式及元素排列要求为(顺序方式存储,元素有序 )。 2. 有一个按元素值排好序的顺序表(长度大于2),分别用顺序查找和折半查找与给定值相等的元素,比较次数分别是s和b&am…

拼接合并yuv序列转成mp4

ffmpeg需要用支持libx264的版本,如果需要,可以从这个网站下载编译支持libx264\x265的ffmpeg https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.1-essentials_build.7z #-*- coding:utf-8-*- import osif __name__ "__main__":# 1 输入…

实例讲解:在3dMax中如何使用python脚本?

如果你是Python或Maxscript的新手,你现在可以跟着这篇文章开始做一些代码了,本文将让我们从非常基本的东西开始学习。 如何在3dmax中获取选定的节点并打印出它们的名称?所有场景对象如何?我们直接看代码: import MaxP…

Word/PPT/PDF怎么免费转为JPG图片?

1、打开金鸣表格文字识别网站。 2、点击导航条上的“软件下载” 3、安装并打开金鸣表格文字识别软件。 4、点击顶部导航栏的“文件转图片”。 5、选择需要转换成图片的文件(支持Word/PPT/PDF). 6、点“打开”程序将自动分页转换为图片。

【论文阅读笔记】Smil: Multimodal learning with severely missing modality

Ma M, Ren J, Zhao L, et al. Smil: Multimodal learning with severely missing modality[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2021, 35(3): 2302-2310.[开源] 本文的核心思想是探讨和解决多模态学习中的一个重要问题:在训练和测…

【dart线程之怎么处理异步和顺序异步任务队列】

dart线程之怎么处理异步和顺序异步任务队列 单线程的dart怎么处理异步任务的? 事件循环模型就是实现异步处理任务的核心。 关于阻塞式调用和非阻塞式调用的概念 阻塞和非阻塞关注的是程序在等待调用结果(消息、返回值)时的状态阻塞式调用…

JS中的OOP

JS中的OOP OOP 为我们解决了什么问题?想象一下,我们希望为教师提供一个平台,每位注册的教师都可以提交分数,并为课程分配作业和其他内容。 如果有一个地方(在本例中是一个对象),可以访问所有教…

Python编写的爬虫为什么受欢迎?

每每回想起我当初学习python爬虫的经历,当初遇到的各种困难险阻至今都历历在目。即便当初道阻且长,穷且益坚,我也从来没有想过要放弃。今天我将以我个人经历,和大家聊一聊有关Python语音编写的爬虫的事情。谈一谈为什么最近几年py…

C#中的事件(委托的发布和订阅、事件的发布和订阅、EventHandler类、Windows事件)

目录 一、委托的发布和订阅 1.订阅操作符号“"和取消订阅操作符号“-” 2.示例源码 二、事件的发布和订阅 三、EventHandler类 四、Windows事件 C#中的事件是指某个类的对象在运行过程中遇到的一些特定事情,而这些特定的事情有必要通知给这个对象的使用者…