处理CSV(python)
处理CSV(python)
- 简介
- 1. CSV和Python简介
- 2. 文章内容简介
- 一、用csv模块读取和写入CSV文件
- 1. CSV模块
- 2. 示例
- 二、用pandas库读取和写入CSV文件
- 1. pandas
- 2. 示例
- 三、处理CSV文件中的特殊情况
- 1. 特殊情况及处理方法
- 2. 示例
简介
1. CSV和Python简介
CSV是一种常见的数据格式,可以用来存储和交换表格数据。CSV文件由一系列的行组成,每行包含一些用逗号分隔的字段。CSV文件可以用文本编辑器或excel打开和编辑,也可以用编程语言进行处理和分析。
Python是一种流行的编程语言,它有许多内置的模块和第三方库,可以方便地读取和写入CSV文件。
2. 文章内容简介
本文将介绍如何用Python处理CSV文件,包括以下几个方面:
- 用csv模块读取和写入CSV文件
- 用pandas库读取和写入CSV文件
- 处理CSV文件中的特殊情况,如引号、换行符、编码等
一、用csv模块读取和写入CSV文件
1. CSV模块
csv模块是Python标准库中的一个模块,它提供了一些类和函数,可以帮助我们读取和写入CSV文件。csv模块常用的类有两个:
- csv.reader:用来从一个文件对象或一个迭代器中读取CSV数据,返回一个迭代器,每次迭代返回一个列表,表示一行数据。
- csv.writer:用来将数据写入一个文件对象或一个迭代器中,接受一个可迭代对象作为参数,每个元素是一个列表,表示一行数据。
2. 示例
示例文件:data.csv如下图:
用csv模块读取和写入CSV文件:
# 导入csv模块
import csv# 以只读模式打开一个CSV文件
with open('data.csv', 'r') as f:# 创建一个csv.reader对象,指定分隔符为逗号reader = csv.reader(f, delimiter=',')# 遍历reader对象,打印每一行数据for row in reader:print(row)# 用写入模式创建一个新的CSV文件,newline=''可以避免空行
with open('new_data.csv', 'w', newline='') as f:# 创建一个csv.writer对象,指定分隔符为逗号writer = csv.writer(f, delimiter=',')# 写入一些数据,每个元素是一个列表,表示一行数据writer.writerow(['name', 'age', 'gender'])writer.writerow(['Alice', '25', 'F'])writer.writerow(['Bob', '30', 'M'])
执行结果:
新创建的new_data.csv文件如下图:
newline='‘可以避免空行,如果没有这一句,在写入的每一行内容后面会有一行空行,如下图:
关于newline=’'的内容可以去看看pfm685757博主的文章: python3 writerow CSV文件多一个空行
二、用pandas库读取和写入CSV文件
1. pandas
pandas是一个流行的第三方库,它提供了一些高级的数据结构和函数,可以方便地进行数据分析和处理。pandas中最重要的数据结构是DataFrame,它是一个二维的表格数据结构,可以存储不同类型的数据,并支持各种操作。
pandas提供了一些函数,可以轻松地将DataFrame对象转换为CSV文件,或者从CSV文件中读取数据并创建DataFrame对象。这些函数有:
- pandas.read_csv:从一个CSV文件或一个URL中读取数据,并返回一个DataFrame对象。
- pandas.to_csv:将一个DataFrame对象写入一个CSV文件或一个字符串中。
2. 示例
示例文件:data.csv如下图所示:
用pandas读取和写入CSV文件:
# 导入pandas库
import pandas as pd# 从一个CSV文件中读取数据,并创建一个DataFrame对象
df = pd.read_csv('data.csv')
# 打印df的基本信息
print(df.info())
# 打印df的表头及除表头外的5行数据,默认有表头
print(df.head())# 用每个元素是字典的列表创建一个新的DataFrame对象
new_df = pd.DataFrame([{'name': 'Alice', 'age': 25, 'gender': 'F'}, {'name': 'Tom', 'age': 28, 'gender': 'M'}])
# 将new_df写入一个新的CSV文件中
new_df.to_csv('new_data.csv', index=False)
运行结果:
新创建的new_data.csv文件如下图:
三、处理CSV文件中的特殊情况
有些CSV文件中可能会包含一些特殊情况,如引号、换行符、编码等。在处理这些文件时,我们需要特别注意这些情况,以免导致解析错误或数据丢失。
1. 特殊情况及处理方法
- 引号:有些CSV文件中的字段可能包含引号,这会影响到CSV文件的解析。如果一个字段包含的文本中包含逗号,则需要将该字段用双引号引起来,以与其他字段区分开。而如果一个字段中本身就包含双引号,则需要用两个双引号来表示一个双引号,例如:“field with ““double quotes”””.
- 换行符:有些CSV文件中的字段可能包含换行符,这也会影响到CSV文件的解析。通常情况下,换行符应该被视为字段内容的一部分,而不是分隔符。当读取包含换行符的CSV文件时,应该将整个文本字段读入并处理换行符。而写入包含换行符的CSV文件时,则需要将该字段用双引号或其他符号引起来,以确保换行符不会被看作是一个新的行。
- 编码问题:CSV文件中的数据可能使用不同的编码方式进行存储,这也会影响到CSV文件的解析。通常情况下,应该使用与CSV文件相同的编码方式进行解析和处理。如果CSV文件的编码方式不确定,则可以尝试使用一些常见的编码方式(如UTF-8、GBK、ISO-8859-1等)进行解析,并观察数据的准确性和完整性。
2. 示例
示例文件:data_with_quotes.csv如下图:
处理包含引号和换行符的CSV文件:
import csv# 使用csv.reader读取包含引号和换行符的CSV文件
with open('data_with_quotes.csv', 'r') as f:reader = csv.reader(f, delimiter=',', quotechar='"')for row in reader:print(row)# 使用csv.writer写入包含引号和换行符的CSV文件
with open('new_data_with_quotes.csv', 'w', newline='') as f:# 使用quotechar参数来指定引号字符,quoting参数来指定如何引用特殊字符writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)writer.writerow(['name', 'age', 'text'])writer.writerow(['Alice', '25', 'This is a "text" field.'])writer.writerow(['Tom', '28', 'This is a field\nwith\nnewlines.'])
运行结果:
新创建的new_data_with_quotes.csv文件如下图所示:
相关文章:
![](https://img-blog.csdnimg.cn/5ab4992af2f34b5bb97e5e1f40614e60.png)
处理CSV(python)
处理CSV(python)简介1. CSV和Python简介2. 文章内容简介一、用csv模块读取和写入CSV文件1. CSV模块2. 示例二、用pandas库读取和写入CSV文件1. pandas2. 示例三、处理CSV文件中的特殊情况1. 特殊情况及处理方法2. 示例简介 1. CSV和Python简介 CSV是一…...
![](https://img-blog.csdnimg.cn/e09f41613dba46f6822a02e38aee3bab.png)
【云原生】Kubernetes(k8s)之容器的探测
Kubernetes(k8s)之容器的探测一、探测类型及使用场景1.1、startupProbe(启动探测)1.2、readinessProbe(就绪探测)1.3、livenessProbe(存活探测)二、检查机制三、探测结果四、容器探测…...
![](https://img-blog.csdnimg.cn/cb9a37a9eba04e879c073786c8eef5f6.jpeg)
看完这个你就牛了,自动化测试框架设计
一、引言 随着IT技术的快速发展,软件开发变得越来越快速和复杂化。在这种背景下,传统的手工测试方式已经无法满足测试需求,而自动化测试随之而生。 自动化测试可以提高测试效率和测试质量,减少重复性的测试工作,从而…...
![](https://img-blog.csdnimg.cn/8f4a17c233b04065bd9ba0d94152df12.gif#pic_center)
Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化
前言 本文小新为大家带来 Sentinel规则持久化 相关知识,具体内容包括,Sentinel规则推送三种模式介绍,包括:原始模式,拉模式,推模式,并对基于Nacos配置中心控制台实现推送进行详尽介绍~ 不积跬步…...
![](https://img-blog.csdnimg.cn/img_convert/3f8cd2875269d8ddc23863177df0e1cd.gif)
Mysql不锁表备份之Xtrabackup的备份与恢复
一、Xtrabackup介绍 MySQL冷备、热备、mysqldump都无法实现对数据库进行增量备份。如果数据量较大我们每天进行完整备份不仅耗时且影响性能。而Percona-Xtrabackup就是为了实现增量备份用于MySQL数据库物理热备的备份工具,xtrabakackup有2个工具,分别是x…...
![](https://img-blog.csdnimg.cn/258206dbe8e34af3879d3746dac40eae.jpeg#pic_center)
flex布局:输入框布局demo
目标效果 首先,生成输入框: 代码: 结果: 设置基本样式 包括:去除边距、设置父盒子的宽度(如果不设置宽度,会使用整个浏览器的宽度)、添加父盒子边框等 代码: *{margin: 0;pad…...
![](https://www.ngui.cc/images/no-images.jpg)
PHP请求的好处,PHP如何请求淘宝开放接口
PHP的好处有很多,最主要的特性就是PHP的安全性和兼容性明显。 1、良好的安全性 PHP是开源软件,所有PHP的源代码每个人都可以看得到,同时它与Apache编绎在一起的方式也可以让它具有灵活的安全设定, PHP具有了公认的安全性能。开源…...
![](https://www.ngui.cc/images/no-images.jpg)
精选出来的几道Java语法基础面试题
1.成员变量与局部变量的区别有那些? 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;成员变量和局部…...
![](https://www.ngui.cc/images/no-images.jpg)
uniapp或者小程序图片选择中的sizeType属性到底是什么
sizeType属性到底是什么 https://developers.weixin.qq.com/community/develop/doc/0006c261a300089771f9a233a56c00 https://ask.dcloud.net.cn/question/146679 第一个链接来自微信小程序社区,有开发者提了个问题:sizeType: ["original", &q…...
![](https://www.ngui.cc/images/no-images.jpg)
判断一个字符串是否是回文
目录 判断一个字符串是否是回文 程序设计 程序分析 判断一个字符串是否是回文 【问题描述】编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文")。 【输入形式】长度小于100的任意字符串 【输出形式】如果输入字符串是回…...
![](https://img-blog.csdnimg.cn/8d24619377c84341bb40194c47335fe3.png)
国产软件爆发!中国版Navicat,SQL Studio成数据库管理工具热门
如果关注2023年的A股市场,会发现各行各业都掀起了“国产化替代”运动的热潮。不仅仅是芯片,新能源、医疗器械甚至软件等领域,也都加快了国产化进程。 长期以来,中国的软件业比较依赖国际巨头。比如操作系统以微软为主,…...
![](https://img-blog.csdnimg.cn/c700fcbc62114b0abd1ff01ba374fcfd.png)
算法学习day51
算法学习day511.力扣309.最佳买卖股票时机含冷冻期1.1 题目描述1.2分析1.3 代码2.力扣714.买卖股票的最佳时机含手续费2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣309.最佳买卖股票时机含冷冻期 1.1 题目描述 题目描述 给定一个整数数组,其中第i个元素代表了第…...
![](https://img-blog.csdnimg.cn/da4460bc39824c6c8dc69d7f883cf379.png)
10 JS01——初识JS
目标: 1、初识JavaScript 2、JavaScript注释 3、JavaScript输入输出语句 一、初识JavaScript 1、JavaScript是什么 JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思) 脚本语言:不需要编译,运行过程…...
![](https://www.ngui.cc/images/no-images.jpg)
【软考备考-综合知识】安全性、可靠性与系统性能评测基础知识
计算机的安全性 安全等级 计算机系统中的三类安全性是指技术安全性、管理安全性和政策法律安全性。 信息安全五要素 机密性:全包信息不暴露给未授权的实体或进程。 完整性:只有得到允许的人才能够修改数据,并能够判别出数据是否已被篡改。…...
![](https://img-blog.csdnimg.cn/772159fe53a9463ea8333cebb953a814.png)
匆忙之间难免疏忽,写代码更加如此
一个方法包含了多个知识点的合计,合计起来用。实战开发特点1; 基础知识点不牢固,您必定就会感觉寸步难行啊 public class AddJiChuShu{int a 1;int b 2;int c 0;int d 0;string str "";string str2 "张三";//mothe…...
![](https://www.ngui.cc/images/no-images.jpg)
低代码(七)低代码平台后端技术选型2.0
JWT 登录token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服…...
UDS介绍
首先要有网络网络七层的概念: 学习链接: 七层网络模型-CSDN博客 UDS网络层/TP层(ISO 15765-2)的解读 - 知乎 (zhihu.com) 概念: UDS(Unified Diagnostic Services,统一的诊断服务。 标准名是《…...
![](https://img-blog.csdnimg.cn/img_convert/333f64b332a54298011f695dcf6df780.png)
ASP.NET Core MVC 从入门到精通之初窥门径
随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,…...
![](https://img-blog.csdnimg.cn/img_convert/dd9cb0388b189d44295f75a6ee1739c9.jpeg)
英码科技智慧环卫:构建宜居城市新篇章
随着城市化进程的加快,城市环境卫生问题日益凸显。如何提高城市环境卫生管理水平,提升城市品质,成为了各级政府和社会各界关注的焦点。智慧环卫作为一种结合现代信息技术的环境卫生管理方式,正在逐渐成为解决城市环境卫生问题的有…...
![](https://www.ngui.cc/images/no-images.jpg)
在Spring Boot微服务使用HashOperations操作Redis Hash哈希散列
记录:403 场景:在Spring Boot微服务使用RedisTemplate的HashOperations操作Redis Hash哈希散列。 版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5 1.微服务中Redis配置信息 1.1在application.yml中Redis配置信息 spring:redis:host: 192.1…...
![](https://www.ngui.cc/images/no-images.jpg)
innobackupex备份mysql产生returned OS error 124
解决使用innobackupex备份mysql产生returned OS error 124 xtrabackup 报错Too many open files 故障处理 一、背景 客户反馈数据库备份失败。 二、环境描述 [rootmes-node1 ~]# mysql -V mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper [root…...
![](https://img-blog.csdnimg.cn/d3b59792a51d4b01bd25d57421e169b9.png)
明明有index.jsp文件访问的时候却显示404
重建一下项目...
![](https://img-blog.csdnimg.cn/c9a4c85489374cbba913a220a9ee6756.jpeg)
人工智能前沿——「全域全知全能」人类新宇宙ChatGPT
🚀🚀🚀OpenAI聊天机器人ChatGPT——「全域全知全能」人类全宇宙大爆炸!!🔥🔥🔥 一、什么是ChatGPT?🍀🍀 ChatGPT是生成型预训练变换模型(Chat G…...
![](https://www.ngui.cc/images/no-images.jpg)
eslint-plugin-import - import/order
eslint-plugin-import是什么? 该插件目的在于支持ES6以上的导入/导出语法,并防止文件路径和导入名称拼写错误的问题。 import/order是什么? 按照约定的规则对引入的模块进行排序。 import/order常用规则介绍 groups 约定引入模块顺序的…...
![](https://www.ngui.cc/images/no-images.jpg)
selenium知识点大全
selenium知识点大全 在使用selenium之前必须先配置浏览器对应版本的webdriver。 1. 初始化浏览器对象 from selenium.webdriver import Chrome# 创建浏览器对象,并且打开一个空的页面 browser Chrome()# 关闭浏览器 browser.close()2. 访问指定网页 from selen…...
![](https://img-blog.csdnimg.cn/img_convert/6a5a20316c8dc9ef7ab157ec38eec9f6.png)
Biotin-PEG-SH生物素-聚乙二醇-巯基结构式;SH-PEG-Biotin
Biotin-PEG-SH 生物素-聚乙二醇-巯基 中文名称:生物素-聚乙二醇-巯基 英文名称:Biotin-PEG-SH Biotin-PEG-Thiol 性状:粘稠液体或者固体粉末,取决于分子量 溶剂:溶于水和DCM、DMF等大部分有机溶剂 分子式&#x…...
![](https://img-blog.csdnimg.cn/img_convert/22baab96c79f8f99efa56a9b86f14ceb.png)
【防止恶意用户注册】-- 手机在网状态 API 的防欺诈应用解析
简介 手机在网状态 API 支持传入手机号码,查询手机号在网状态,返回在网、在网不可用、不在网(销号/未启用/停机)等多种状态,查询手机号在网状态之后,可以根据具体的业务需求来进行不同的处理。 本文主要介…...
![](https://img-blog.csdnimg.cn/e01b8db93337419ebaea208a5b2246e0.png)
Python json 数据提取 jsonpath 详解
一、JsonPath JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。也就是独立的可以配合多种语言进行匹配的目标值的一种类库,和…...
![](https://img-blog.csdnimg.cn/9e55881f08644fb586992960e24901ec.png)
TCP和UDP的区别以及应用场景
区别 首先UDP协议非常简单,头部只有8个字节: 校验和为了提供可靠的UDP首部和数据而设计,防止收到在网络传输中受损的UDP包。 再对比下TCP协议: 传输层有两个传输协议分别是 TCP 和 UDP,在内核中是两个完全独立的软件…...
![](https://img-blog.csdnimg.cn/12095740e64a4f90bc7fbdcdc2ddc583.png)
高铁轮毂表面缺陷的<视觉显著性>超像素图像检测方法
内容:提出一种基于视觉显著性注意机制的超像素自适应检测方法; 设计视觉显著性注意机制滤波器用于粗略定位出缺陷空间范围,结合超像素分块图像分割方法消除光照不均匀引起的噪声干扰,有效地完成缺陷区域的边界分割和实时特征提取&…...
![](http://s3.51cto.com/wyfs02/M01/99/9E/wKioL1lKM6zii0nQAACCo3g8oio809.jpg-wh_651x-s_1878817584.jpg)
国内做性视频网站有哪些/百度开户返点
AMD公司今日发布AMD EPYC™(霄龙)7000系列高性能数据中心处理器,与全球服器生态系统的合作伙伴共同开启数据中心发展的新时代。AMD与众多客户和合作伙伴共同启动了全球发布会,带来了一系列系统和性能演示,以及客户的背书。AMD EPYC采用创记录…...
![](https://img-blog.csdnimg.cn/7538165d2acb4641818ba073c2b77608.png)
当阳网站建设/软件开发培训机构
文章目录前言创建项目并添加依赖编写代码并测试总结前言 在日常 Java 开发中,一般都需要进行单元测试,而 Mock 测试则是单元测试中的重要方法之一。所谓 Mock 测试,就是指在测试过程中,对于一些不容易构造或难以获取的较为复杂的…...
![](https://img-blog.csdnimg.cn/img_convert/baf7a9f7b38a0ed38563045d00a01889.png)
网站 公司/朋友圈推广文案
spark能跑Python么?spark是可以跑Python程序的。python编写好的算法,或者扩展库的,比如sklearn都可以在spark上跑。直接使用spark的mllib也是可以的,大部分算法都有。Spark 是一个通用引擎,可用它来完成各种各样的运算…...
![](https://img-blog.csdnimg.cn/img_convert/f382b4b6f581f1483355f6908014dd47.png)
合肥网站建设制作公司/西安百度首页优化
内容:OMV在windows10下的文件共享--NAS基本条件Armbian的IP设置 以太网及WiFitransmission配置遇到的问题OMV在windows10下的文件共享--NAS基本条件看了好几个教程都有一些问题,目前找到可以的,参考链接哔哩哔哩-教你完成一台基于开源系统OMV…...
![](https://img-blog.csdnimg.cn/img_convert/49042a362df8a83aa97475a1655b4f0b.png)
株洲网站设计/谷歌浏览器下载
注:本文中的例子与数据均为杜撰,并为了说明问题做了简化,请勿对号入座另:为了降低理解成本,本文尽量以直观的方法呈现,略去复杂公式推导,让聚类算法变成一个很直观的、开箱即用的工具。1. 前言物…...
![](https://s1.51cto.com/attachment/201101/20/733218_12955025165kt0.jpg)
如何制作自己的个人网站/百度信息
软件名:MKVToolnix 版本号:V4.4.0 简介:MKVToolnix是开源软件,可将目前主流音视频封装为MKV格式。对于喜欢体味原汁原味的同志们,可以使用这款软件,将字幕和语言默认设为英文,不用每次看时手动设…...