【Python】数据处理:CSV文件操作

CSV 文件(Comma-Separated Values,逗号分隔值文件)是一种常见的文本文件格式,用于存储表格数据。它的特点是用逗号或其他特定字符(如分号、制表符等)来分隔不同的字段,每行代表表格中的一条记录。

import csv

基本读写

读取 CSV 文件

最基本的功能是读取 CSV 文件。这可以通过 csv.reader 来实现。

with open('example.csv', newline='') as csvfile:csvreader = csv.reader(csvfile)  #每行内容解析为列表for row in csvreader:print(row)

这里,newline='' 是为了确保读取时不会因为行结束符的问题出现错误。

写入 CSV 文件

写入 CSV 文件可以使用 csv.writer

with open('output.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile)csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New York'])csvwriter.writerow(['Bob', 25, 'Los Angeles'])

writerow 方法用于写入单行数据。

字典读写

使用字典读取 CSV 文件

为了更方便地处理 CSV 文件,可以使用 csv.DictReader,它将每行数据读成字典。

with open('example.csv', newline='') as csvfile:csvreader = csv.DictReader(csvfile)  # 创建 DictReader 对象headers = csvreader.fieldnames  # 可获取表头print("Headers:", headers)for row in csvreader:  # 逐行读取数据print(row)

DictReader 会自动将第一行作为字典的键。

使用字典写入 CSV 文件

类似地,使用 csv.DictWriter 可以将字典写入 CSV 文件。

with open('output.csv', 'w', newline='') as csvfile:fieldnames = ['Name', 'Age', 'City']csvwriter = csv.DictWriter(csvfile, fieldnames=fieldnames)csvwriter.writeheader()  # 写入表头csvwriter.writerow({'Name': 'Alice', 'Age': 30, 'City': 'New York'})csvwriter.writerow({'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'})

writeheader 方法用于写入表头。

复杂处理

处理不同的分隔符

CSV 文件并不总是用逗号分隔,可以用不同的分隔符。

with open('example_tab.csv', newline='') as csvfile:csvreader = csv.reader(csvfile, delimiter='\t')for row in csvreader:print(row)

同样地,在写入时也可以指定分隔符。

with open('output_tab.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile, delimiter='\t')csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New York'])csvwriter.writerow(['Bob', 25, 'Los Angeles'])

处理复杂的 CSV 格式

有时 CSV 文件中包含引号、换行符等特殊字符,可以使用 csv 模块中的 QUOTE_* 常量进行处理。

with open('complex.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New\nYork'])csvwriter.writerow(['Bob', '25', 'Los "Angeles"'])

常见的 QUOTE_* 常量包括:

  • csv.QUOTE_ALL: 对所有字段都加引号
  • csv.QUOTE_MINIMAL: 只对包含特殊字符的字段加引号
  • csv.QUOTE_NONNUMERIC: 对所有非数字字段加引号
  • csv.QUOTE_NONE: 不加引号

自定义 CSV 方言

可以通过 csv.register_dialect 创建自定义的 CSV 方言,方便处理不同格式的 CSV 文件。

csv.register_dialect('mydialect', delimiter=';', quoting=csv.QUOTE_NONE)
with open('example.csv', newline='') as csvfile:csvreader = csv.reader(csvfile, dialect='mydialect')for row in csvreader:print(row)

在写入时也可以使用自定义方言:

with open('output.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile, dialect='mydialect')csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New York'])csvwriter.writerow(['Bob', 25, 'Los Angeles'])

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

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

相关文章

拦截器 之 用户登录判断

spring boot 拦截器的实现需要有两步: 自定义一个拦截器 package com.example.demo.common;import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import org.springfra…

Golang——gRPC gateway网关

前言 etcd3 API全面升级为gRPC后,同时要提供REST API服务,维护两个版本的服务显然不大合理,所以gRPC-gateway诞生了。通过protobuf的自定义option实现了一个网关。服务端同时开启gRPC和HTTP服务,HTTP服务接收客户端请求后转换为gr…

SAP HANA1709~2023版本Fiori激活简介

SAP Fiori 是一个设计系统,使您能够创建具有消费者级别用户体验的业务应用,通过在任何设备上运行,可以在Ipad或者是手机端都可以随时随地的使用SAP,现在越来越多的公司都在使用Fiori系统,公司高层可以更直观的在移动端设备中查看各种数据。 本文主要说明HANA版本怎么激活F…

直流放大器

一,概念及存在问题 集成电路主要由半导体材料构成,其内部适合用二极管,三极管等类型的元器件制作,而不适用电容,电感和变压器,因此集成放大电路内部多个放大电路之间通常采用直接耦合。直接耦合电路除了可…

k8s_ReplicationController_ReplicaSet_Deployment的关系和区别

ReplicaSet并不是老版本的功能,而是Kubernetes中持续存在的一个核心组件。不过,ReplicaSet确实是由一个更早的、功能更为简单的组件ReplicationController演变而来的。ReplicaSet和Deployment在现代Kubernetes应用中紧密相关,Deployment通常被用来管理ReplicaSet,以实现更高…

perl use HTTP::Server::Simple 轻量级 http server

cpan -i HTTP::Server::Simple 返回:已是 up to date. 但是我在 D:\Strawberry\perl\site\lib\ 找不到 HTTP\Server 手工安装:下载 HTTP-Server-Simple-0.52.tar.gz 解压 tar zxvf HTTP-Server-Simple-0.52.tar.gz cd D:\perl\HTTP-Server-Simple-…

人工智能中实现自动化决策与精细优化的核心驱动力

在人工智能(AI)中,实现自动化决策和精细优化的核心驱动力主要包括以下几个方面: 1. 数据驱动的学习(Data-Driven Learning) 数据是自动化决策和优化的基础。通过收集和分析大量的数据,AI系统能…

牛客热题:兑换零钱(一)

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:兑换零钱(一)题目链接方法一&am…

基于WPF技术的换热站智能监控系统03--实现左侧加载动画

1、左侧布局规划 左侧分5行,每行的高度通过height属性来指定,1.2*表示占1.2倍的宽度 2、创建用户控件 在WPF中想要进行个性化处理,主要可以通过三个方面来实现:控件模板(控件模板、数据模板、数据容器模板&#xff09…

【Webpack】使用 Webpack 构建 Vue3+TS 项目

构建项目目录 tsc --init npm init -yshim.d.ts 文件是一个类型声明文件,用于告诉 TypeScript 编译器如何处理 Vue 的单文件组件(SFC)和其他自定义模块。为 Vue 的单文件组件和其他非 TypeScript 模块提供类型信息,以便在 TypeScr…

Python单元测试框架:unittest与pytest的深度对比

引言 unittest和pytest是两个非常流行的框架。它们各自有着独特的优势和使用场景。本文将从多个维度对这两个框架进行深入的比较和分析。 一、测试用例编写规范 unittest框架 遵循严格的继承和命名规则,确保测试结构的清晰和一致性。测试类必须继承自unittest.T…

Web期末复习指南(2w字总结)

前言:本文旨在梳理Web技术常包含的内容,阅读完整篇文章后会对整体有个系统的认知,从前端的HTML到后端的MySql,对于大概试题中可能会涉及的地方都有所分析,通篇提供了许多代码案例,供读者更好的理解。对于一…

FPGA - 全局时钟资源

全局时钟资源是指FPGA内部为实现系统时钟到达FPGA内部各 CLB、IOB,以及BSRAM(Block Select RAM,选择性BRAM)等基本逻辑单元的延时和抖动最小化,采用全铜层工艺设计和实现的专用缓冲与驱动结构。 由于全局时钟资源的布线…

Qt | QDataStream 类(数据流)

01、读/写对象原理 1、QDataStream 类负责以二进制方式读/写程序中的对象,输入源和输出目样标可以是QIODevice、QByteArray 对象。 2、字节序:即多字节数据(即大于一个字节的数据)在内存中的存储顺序,有如下两种方式  Little-Endian(LE,小端):即低位字节存储在低地址端…

OpenGL3.3_C++_Windows(5)

变换 && 3D空间的2D图形 /\/\/\/\/\//\/\/\/\/\/\/\/\//\/\///\/\/\/\//\/\/\/\//\//\/\/\/\/\\/GLM库从0.9.9版本起,默认会将矩阵类型初始化为一个零矩阵(所有元素均为0),而不是单位矩阵(对角元素为1&#…

从踢足球到数字孪生

前言 贵州“村超”的火热现象是一个多方面因素共同作用的结果,它不仅是一场体育赛事,更是一个文化现象,反映了时代的精神和人民的情感诉求,同时也推动了乡村振兴和地区发展。足球的魅力是多方面的,它不仅仅是一项运动,更是一种全球性的文化现象。 简单规则下的无限变化:…

Java注解Annotation机制说明和基础使用(为什么Annotation直接促进了框架的繁荣发展?)

一、注解解决的问题【可忽略】 软件开发过程中,如何配置一直是一个重要的问题,对于一个框架,如果你不为它提供初始结构,它就无法理解你要做什么,自然无法工作。 1.问题:紧密贴合的代码和配置 在很久之前…

分布式微服务: springboot底层机制实现

springboot底层机制实现 搭建SpringBoot底层机制开发环境ConfigurationBean会发生什么,并分析机制提出问题: SpringBoot 是怎么启动Tomcat, 并可以支持访问Controller源码分析: SpringApplication.run()SpringBoot的debug流程 实现SpringBoot底层机制[Tomcat启动分析 Spring容…

【数据分析】推断统计学及Python实现

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

数列求和、统计输入正数个数 题目

题目 JAVA9 数列求和分析:代码:大佬代码: JAVA10 统计输入正数个数分析:代码: JAVA9 数列求和 描述 有数列为:9,99,999,…,9999999999。要求使用程序计算此数…