当前位置: 首页 > news >正文

【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'])

相关文章:

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

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

SpringBoot集成Elasticsearch实例

SpringBoot项目集成Elasticsearch实例 导包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>配置es连接 spring:data:elasticsearch:cluster…...

2024.ZCPC.M题 计算三角形个数

题目描述&#xff1a; 小蔡有一张三角形的格子纸&#xff0c;上面有一个大三角形。这个边长为 的大三角形&#xff0c; 被分成 个边长为 1 的小三角形(如图一所示)。现在&#xff0c;小蔡选择了一条水平边 删除&#xff08;如图二所示&#xff09;&#xff0c;请你找出图上剩余…...

Java常见设计模式入门与实践

设计模式是软件开发中被反复应用的、为解决特定问题而总结出的最佳实践。它们提供了开发可重用、灵活和高效软件系统的方法。在Java中&#xff0c;设计模式可以帮助开发者编写更高质量的代码。以下是Java中一些常用设计模式的入门介绍及其实践示例。 1. 单例模式 (Singleton P…...

110.平衡二叉树

给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 题解&#xff1a;平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。可以采用递归遍历每一个节点&#xff0c;得到其高度&#xff0c;在判断高度时不可避免的要用到其左右子树的高度&#xff0c;所以可以顺便判断出…...

字符串数组——传递文本的不同方法实例

一、实例化一个文本并在文本上直接显示接收的信息 1、制作一个预制体 (1) UI-Text (TMP)&#xff0c;TitleText (2) 给Text (TMP)添加Recipients.cs组件 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine;public class Recipi…...

JDBC简介

JDBC最基本的知识点要求理解并会使用下边的两个案例即可&#xff1a; 前言&#xff1a; Jdbc操作步骤简析&#xff1a; 1.Connection connDriverManager.getConnection(url,账号&#xff0c;密码)&#xff1a;用DriverManager类的连接方法根据url账号密码连接数据库&#xf…...

RK3568平台(触摸篇)触摸屏基本原理

一.触摸屏概述 触摸屏作为一种新的输入设备&#xff0c;它是目前最简单、方便、自然的一种人机交互方式。 触摸屏又称为“触控屏”、“触控面板”&#xff0c;是一种可接收触头等输入讯号的感应式液晶显示装置&#xff1b;当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉…...

【太原理工大学】软件系统安全—分析题

OK了&#xff0c;又是毫无准备的一场仗&#xff0c;我真是ありがとうございます 凸^o^凸 根据前几年传下来的信息&#xff0c;所谓“分析”&#xff0c;就是让你根据情节自行设计&#xff0c;例如如何设计表单等&#xff0c;这类多从实验中出&#xff0c;王老师强调好好做实验一…...

【仪器仪表/电源专题】浮地信号的测试的四种方案对比

接地信号和浮地信号区别 所有的电压测量都是差分测量&#xff0c;差分测量定义为两点之间的电压差。所以会分成两类&#xff1a; 1.参考地电平测量&#xff08;有时也叫接地信号&#xff09; 2.非参考地电平测量&#xff08;也称为浮地测量&#xff09; 测试信号可以分为接地信…...

Centos7安装jdk8或11以及切换方案

目录 jdk安装 安装OpenJDK11 安装OpenJDK8 配置默认的 Java 版本 验证 全局环境变量&#xff08;选配&#xff09; 个人版&#xff08;自己可以用&#xff0c;公司不建议&#xff09; 公司版本 /etc/profile 和 ~/.bash_profile 区别 前言-与正文无关 生活远不止眼前的苦…...

计算机二级Access选择题考点—代码篇

第1题 窗体的事件过程如下: Private Sub Form MouseDown(Button As Integer ,Shift As integer,X As Single,Y As Single)If Shift 6 And Button 2 Then MsgBox "Hello World."End lf End Sub程序运行后&#xff0c;要在窗体消息框中显示"Hello World."…...

海外仓系统如何让海外仓受益,WMS海外仓系统使用指南

随着跨境电商业务的快速发展&#xff0c;海外仓面临着需要更加高速运转的巨大挑战。 当海外仓出现因为手动作业导致效率低下&#xff0c;成本不断飙升或者出现库存管理问题的时候&#xff0c;意味着是时候引入一套合适的海外仓管理系统了。 对于寻求海外仓业务流程优化的企业…...

贪心-区间问题

135. 分发糖果 问题描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#x…...

算法分析与设计期末考试复习GDPU

重点内容&#xff1a; 绪论&#xff1a; 简单的递推方程求解 1.19(1)(2) 、 教材例题 多个函数按照阶的大小排序 1.18 分治法&#xff1a; 分治法解决芯片测试问题 计算a^n的复杂度为logn的算法&#xff08;快速幂&#xff09; 分治法解决平面最近点对问…...

分批次训练和评估神经网络模型

【背景】 训练神经网络模型的时候&#xff0c;特征组合太多&#xff0c;电脑的资源会不足&#xff0c;所以采用分批逐步进行。已经处理过的批次保存下来&#xff0c;在下一次跳过&#xff0c;只做新加入的批次训练。 选择最优模型组合在中间结果的范围内选择&#xff0c;这样…...

【CS.AL】算法核心之分治算法:从入门到进阶

文章目录 1. 概述2. 适用场景3. 设计步骤4. 优缺点5. 典型应用6. 题目和代码示例6.1 简单题目&#xff1a;归并排序6.2 中等题目&#xff1a;最近点对问题6.3 困难题目&#xff1a;分数背包问题 7. 题目和思路表格8. 总结References 1000.01.CS.AL.1.4-核心-DivedeToConquerAlg…...

leetcode刷题记录:hot100强化训练2:二叉树+图论

二叉树 36. 二叉树的中序遍历 递归就不写了&#xff0c;写一下迭代法 class Solution(object):def inorderTraversal(self, root):""":type root: TreeNode:rtype: List[int]"""if not root:return res []cur rootstack []while cur or st…...

湘潭大学信息与网络安全复习笔记2(总览)

前面的实验和作业反正已经结束了&#xff0c;现在就是集中火力把剩下的内容复习一遍&#xff0c;这一篇博客的内容主要是参考教学大纲和教学日历 文章目录 教学日历教学大纲 教学日历 总共 12 次课&#xff0c;第一次课是概述&#xff0c;第二次和第三次课是密码学基础&#x…...

C语言:头歌使用函数找出数组中的最大值

任务描述 本关任务&#xff1a;本题要求实现一个找出整型数组中最大值的函数。 函数接口定义&#xff1a; int FindArrayMax( int a[], int n ); 其中a是用户传入的数组&#xff0c;n是数组a中元素的个数。函数返回数组a中的最大值。 主程序样例: #include <stdio.h>#…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...