处理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文件如下图所示:
相关文章:

处理CSV(python)
处理CSV(python)简介1. CSV和Python简介2. 文章内容简介一、用csv模块读取和写入CSV文件1. CSV模块2. 示例二、用pandas库读取和写入CSV文件1. pandas2. 示例三、处理CSV文件中的特殊情况1. 特殊情况及处理方法2. 示例简介 1. CSV和Python简介 CSV是一…...

【云原生】Kubernetes(k8s)之容器的探测
Kubernetes(k8s)之容器的探测一、探测类型及使用场景1.1、startupProbe(启动探测)1.2、readinessProbe(就绪探测)1.3、livenessProbe(存活探测)二、检查机制三、探测结果四、容器探测…...

看完这个你就牛了,自动化测试框架设计
一、引言 随着IT技术的快速发展,软件开发变得越来越快速和复杂化。在这种背景下,传统的手工测试方式已经无法满足测试需求,而自动化测试随之而生。 自动化测试可以提高测试效率和测试质量,减少重复性的测试工作,从而…...

Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化
前言 本文小新为大家带来 Sentinel规则持久化 相关知识,具体内容包括,Sentinel规则推送三种模式介绍,包括:原始模式,拉模式,推模式,并对基于Nacos配置中心控制台实现推送进行详尽介绍~ 不积跬步…...

Mysql不锁表备份之Xtrabackup的备份与恢复
一、Xtrabackup介绍 MySQL冷备、热备、mysqldump都无法实现对数据库进行增量备份。如果数据量较大我们每天进行完整备份不仅耗时且影响性能。而Percona-Xtrabackup就是为了实现增量备份用于MySQL数据库物理热备的备份工具,xtrabakackup有2个工具,分别是x…...

flex布局:输入框布局demo
目标效果 首先,生成输入框: 代码: 结果: 设置基本样式 包括:去除边距、设置父盒子的宽度(如果不设置宽度,会使用整个浏览器的宽度)、添加父盒子边框等 代码: *{margin: 0;pad…...
PHP请求的好处,PHP如何请求淘宝开放接口
PHP的好处有很多,最主要的特性就是PHP的安全性和兼容性明显。 1、良好的安全性 PHP是开源软件,所有PHP的源代码每个人都可以看得到,同时它与Apache编绎在一起的方式也可以让它具有灵活的安全设定, PHP具有了公认的安全性能。开源…...
精选出来的几道Java语法基础面试题
1.成员变量与局部变量的区别有那些? 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;成员变量和局部…...
uniapp或者小程序图片选择中的sizeType属性到底是什么
sizeType属性到底是什么 https://developers.weixin.qq.com/community/develop/doc/0006c261a300089771f9a233a56c00 https://ask.dcloud.net.cn/question/146679 第一个链接来自微信小程序社区,有开发者提了个问题:sizeType: ["original", &q…...
判断一个字符串是否是回文
目录 判断一个字符串是否是回文 程序设计 程序分析 判断一个字符串是否是回文 【问题描述】编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文")。 【输入形式】长度小于100的任意字符串 【输出形式】如果输入字符串是回…...

国产软件爆发!中国版Navicat,SQL Studio成数据库管理工具热门
如果关注2023年的A股市场,会发现各行各业都掀起了“国产化替代”运动的热潮。不仅仅是芯片,新能源、医疗器械甚至软件等领域,也都加快了国产化进程。 长期以来,中国的软件业比较依赖国际巨头。比如操作系统以微软为主,…...

算法学习day51
算法学习day511.力扣309.最佳买卖股票时机含冷冻期1.1 题目描述1.2分析1.3 代码2.力扣714.买卖股票的最佳时机含手续费2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣309.最佳买卖股票时机含冷冻期 1.1 题目描述 题目描述 给定一个整数数组,其中第i个元素代表了第…...

10 JS01——初识JS
目标: 1、初识JavaScript 2、JavaScript注释 3、JavaScript输入输出语句 一、初识JavaScript 1、JavaScript是什么 JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思) 脚本语言:不需要编译,运行过程…...
【软考备考-综合知识】安全性、可靠性与系统性能评测基础知识
计算机的安全性 安全等级 计算机系统中的三类安全性是指技术安全性、管理安全性和政策法律安全性。 信息安全五要素 机密性:全包信息不暴露给未授权的实体或进程。 完整性:只有得到允许的人才能够修改数据,并能够判别出数据是否已被篡改。…...

匆忙之间难免疏忽,写代码更加如此
一个方法包含了多个知识点的合计,合计起来用。实战开发特点1; 基础知识点不牢固,您必定就会感觉寸步难行啊 public class AddJiChuShu{int a 1;int b 2;int c 0;int d 0;string str "";string str2 "张三";//mothe…...
低代码(七)低代码平台后端技术选型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,统一的诊断服务。 标准名是《…...

ASP.NET Core MVC 从入门到精通之初窥门径
随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,…...

英码科技智慧环卫:构建宜居城市新篇章
随着城市化进程的加快,城市环境卫生问题日益凸显。如何提高城市环境卫生管理水平,提升城市品质,成为了各级政府和社会各界关注的焦点。智慧环卫作为一种结合现代信息技术的环境卫生管理方式,正在逐渐成为解决城市环境卫生问题的有…...
在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…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...