当前位置: 首页 > 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>#…...

抖音无水印视频批量下载器:从零开始的高效内容采集指南

抖音无水印视频批量下载器&#xff1a;从零开始的高效内容采集指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾遇到过这样的困境&#xff1f;想要保存抖音上的精彩视频用于学习参考&#xff0c;…...

CSS线性渐变实战:5分钟搞定炫酷按钮背景(附完整代码)

CSS线性渐变实战&#xff1a;5分钟搞定炫酷按钮背景&#xff08;附完整代码&#xff09; 最近在重构一个企业官网时&#xff0c;产品经理突然要求把所有按钮的纯色背景换成"更有设计感"的效果。面对30多个不同尺寸的按钮&#xff0c;手动设计图片背景显然不现实。这时…...

这次终于选对了!高效论文写作全流程一键生成论文工具推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;以下工具按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景。2026年&am…...

别再傻傻线性扫描了!用Python+Scikit-learn手把手实现IVFFlat图像相似度搜索

用PythonScikit-learn实现IVFFlat图像搜索引擎&#xff1a;从原理到实战 当你面对十万张未分类的图片库&#xff0c;如何快速找到与目标图片最相似的十张&#xff1f;传统线性扫描需要计算所有图片特征的距离&#xff0c;耗时呈线性增长。本文将手把手教你用IVFFlat算法构建高效…...

Kali 2023最新版安装Fluxion避坑指南:从git clone到镜像源全流程

Kali 2023最新版安装Fluxion避坑指南&#xff1a;从git clone到镜像源全流程 如果你正在学习网络安全渗透测试&#xff0c;Fluxion绝对是一个值得掌握的Wi-Fi安全审计工具。作为Kali Linux生态中最受欢迎的无线网络测试套件之一&#xff0c;它通过智能化的交互界面让复杂的攻击…...

Claude Remote Control 技术详解:跨设备无缝协作的远程会话控制方案

Claude Remote Control 技术详解:跨设备无缝协作的远程会话控制方案 声明: 📝 作者:甜城瑞庄的核桃(ZMJ) 原创学习笔记,欢迎分享,但请保留作者信息及原文链接哦~ 引言 在现代软件开发场景中,开发者经常需要在多个设备间切换工作环境。Claude Code 推出的 Remote Con…...

神经网络实战之dsp实现神经网络vad-1

vad神经网络有很多不同的实现&#xff0c;这里的神经网络是基于pytorch实现的&#xff0c;网络结构如下&#xff1a; class MiniVAD(nn.Module):def __init__(self, n_fft512):super().__init__()self.input48 #输入B T 48# 融合层self.fusion nn.Sequential(nn.Linear(self.i…...

UndertaleModTool:解锁游戏修改的无限可能

UndertaleModTool&#xff1a;解锁游戏修改的无限可能 【免费下载链接】UndertaleModTool The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games!) 项目地址: https://gitcode.com/gh_mirrors/un/UndertaleModTool…...

高效USB设备管理工具:一键安全弹出的专业解决方案

高效USB设备管理工具&#xff1a;一键安全弹出的专业解决方案 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quick, flexible, portable alternative…...

Qwen3.5-4B-Claude-Opus-GGUF效果展示:TCP三次握手状态机推理

Qwen3.5-4B-Claude-Opus-GGUF效果展示&#xff1a;TCP三次握手状态机推理 1. 模型能力概览 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个专注于逻辑推理和结构化分析的轻量级AI模型。这个基于Qwen3.5-4B的蒸馏版本特别擅长处理需要分步骤解释的技术问题&#…...