[Python进阶] Python操作csv文件:csv

7.4 Python操作csv文件:csv

7.4.1 csv文件介绍

CSV文件是一种逗号分隔值格式的文件,通常用于存储和交换电子表格或数据库软件中的数据。它是一种纯文本格式的文件,可以方便地用各种办公软件打开和编辑。
在CSV文件中,数据以某种换行符分隔,每条记录由字段组成,字段间的分隔符是逗号或者其他字符或字符串。一些CSV文件还包含列名,通常居文件第一行。
CSV文件的规则包括:

  • 开头不留空,以行为单位。
  • 可含或不含列名,含列名则居文件第一行。
  • 一行数据不垮行,无空行。
  • 以半角符号,作分隔符,列为空也要表达其存在。
  • 列内容如存在,则用引号包含起来。
  • 列内容如存在引号,则用两个连续引号包含。
  • 文件读写时引号、逗号操作规则互逆。
  • 内码格式不限,可为ASCII、Unicode或者其他。

CSV文件通常用Excel等电子表格软件打开,也可以用各种编程语言和数据科学工具进行分析和可视化。通过合理地组织和格式化数据,CSV文件可以有效地存储和分享各种类型的数据。

7.4.2 通过Python自带的csv库操作csv文件

在Python中,你可以使用内置的 csv 模块来读取和写入CSV文件。以下是一些基本的操作:
读取CSV文件

import csv  
  
with open('file.csv', 'r') as f:  
    reader = csv.reader(f)  
    for row in reader:  
        print(row)

在这个例子中,csv.reader 返回一个读取器对象,你可以迭代这个对象来逐行读取CSV文件。每一行都以列表的形式返回,列表中的每个元素都是字符串类型。
写入CSV文件

import csv  
  
rows = [['Name', 'Age'], ['Bob', '23'], ['Alice', '24']]  
  
with open('file.csv', 'w', newline='') as f:  
    writer = csv.writer(f)  
    for row in rows:  
        writer.writerow(row)

在这个例子中,csv.writer 返回一个写入器对象,你可以使用 writerow 方法将每一行写入CSV文件。注意,如果你不在 open 函数中设置 newline=‘’,可能会在Windows下遇到额外的空行问题。

7.4.3 使用DictReader和DictWriter操作csv文件

除了上述的方式,Python的csv模块还提供了DictReader和DictWriter,可以方便地将CSV文件和字典进行转换。例如:
读取CSV文件到字典

import csv  
  
with open('file.csv', 'r') as f:  
    reader = csv.DictReader(f)  
    for row in reader:  
        print(row)

在这个例子中,csv.DictReader 返回一个读取器对象,你可以迭代这个对象来逐行读取CSV文件。每一行都以字典的形式返回,字典的键是列名,值是对应的数据。
将字典写入CSV文件

import csv  
  
rows = [{'Name': 'Bob', 'Age': '23'}, {'Name': 'Alice', 'Age': '24'}]  
  
with open('file.csv', 'w', newline='') as f:  
    fieldnames = ['Name', 'Age']  # 列名  
    writer = csv.DictWriter(f, fieldnames=fieldnames)  
    writer.writeheader()  # 写入列名  
    for row in rows:  
        writer.writerow(row)  # 写入数据行

在这个例子中,csv.DictWriter 返回一个写入器对象,你可以使用 writeheader 方法写入列名,然后使用 writerow 方法将每一行数据写入CSV文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python之文件的相关操作

文件和文件夹的移动、复制、删除、重命名 一、概述 Python中对文件和文件夹进行移动、复制、删除、重命名,主要依赖os模块和shutil模块,以下用实例集中演示文件的移动、复制、删除、重命名,用到的时候直接查询即可。 二、实例 1 #!/usr/bi…

C++11教程:C++11新特性大汇总(第六部分)

C11是2011年发布的C标准,是C的一次重大升级。 第十二部分:C多文件编程 十一、C11列表初始化(统一了初始化方式) 我们知道,在 C98/03 中的对象初始化方法有很多种,请看下面的代码: //初始化列…

C#编程-实现在文本文件中的读和写

实现在文本文件中的读和写 Stream类用于从文本文件读取数据和向文本文件写入数据。它是一个抽象类,支持向流读写字节。如果文件的数据仅是文本,那么您可以使用StreamReader类和StreamWriter类来完成相应的读和写任务。 StreamReader类 StreamReader类继承自从抽象类TextRea…

大家都在问的牛仔外套来啦

经典永不过时的牛仔外套, 绝对是衣橱里必不可少的时尚单品之一 重工水洗破洞乞丐风,个性潮流感十足 时尚帅气,男宝女宝都能穿还有妈妈款哦 经典宽松版型,不挑身材不挑人穿对身材包容性很强 怎么穿都好看,简单搭配…

手轮脉冲平滑处理笔记

这是一个求手脉倍率((Hw_Control.mult_ratio)与手脉脉冲计数延迟次数即累计过去n次的平均值(Hw_Control.lag_num)之间关系算法的计算过程笔记文档 1、已知 mult_ratio=1时 lag_num=10; mult_ratio=10时 lag_num=20; .mult_ratio==100时 lag_num=30; 以此类推 2、设lag_num…

如何实现两台Linux虚拟机ssh免密登录

实验开始前 1.准备好两台虚拟机(下载好镜像文件的) 2.实验步骤 公钥验证:(免密登陆验证方式) (1)生成非对称秘钥 [rootclient ~]# ssh-keygen -t rsa Generating public/private rsa key pai…

无线与局域网技术期末划题自制答案

简答题 1.描述5G的三大应用场景? 5G的三大应用场景包括增强型移动宽带(eMBB)、超可靠低延迟通信(URLLC)和大规模机器类型通信(mMTC)。增强型移动宽带(eMBB)主要用于支持…

数字化转型究竟是什么意思?

在这个飞速发展的数字时代,数字化转型已成为各个行业不可回避的趋势。从企业到组织,都在努力借助先进的数字技术,以迎合时代潮流,提升效率、创造价值。数字化转型不仅仅是技术的升级,更是一场全方位的变革,…

3d模型为什么只显示线是什么原因怎么解决---模大狮模型网

在3D建模中,有时我们会遇到模型只显示线框,而没有填充色或纹理的情况。这种问题可能会导致场景的不协调和视觉效果的不理想,影响到我们的设计效率和效果。本文将探讨一些可能导致该问题的原因,并提供解决方法,以帮助您…

DUET: Cross-Modal Semantic Grounding for Contrastive Zero-Shot Learning论文阅读

文章目录 摘要1.问题的提出引出当前研究的不足与问题属性不平衡问题属性共现问题 解决方案 2.数据集和模型构建数据集传统的零样本学习范式v.s. DUET学习范式DUET 模型总览属性级别对比学习正负样本解释: 3.结果分析VIT-based vision transformer encoder.消融研究消…

导波光学理论基础

导波光学理论基础 一、电磁场基本方程 1.1 麦克斯韦方程组、物质方程、边值关系 麦克斯韦方程组 麦克斯韦方程组是一组微分方程,只能求得通解 如果需要唯一的确定各场矢量,还需补充一些边界条件 线性、静止、各向同性介质的物质方程 D ⃗ ε E ⃗ …

限流式保护器在户外汽车充装的应用

摘 要:国家标准GB51348-2019中规定储备仓库、电动车充电等场所的末端回路应设置限流式电气防火保护器。电气防火限流式保护器可以有效克服传统断路器、空气开关和监控设备存在的短路电流大、切断短路电流时间长、短路时产生的电弧火花大,以及使用寿命短等…

MySQL:ERROR 1067 - Invalid default value for ‘end_time‘【解决办法】

问题描述(mysql版本:5.7.36): 今天在使用Navicat可视化工具运行sql文件,发生如下错误: 在图中,sql是没有错误的,但是运行报错Invalid default value for end_time。 解决办法&#…

模型的权值平均的原理和Pytorch的实现

一、前言 模型权值平均是一种用于改善深度神经网络泛化性能的技术。通过对训练过程中不同时间步的模型权值进行平均,可以得到更宽的极值点(optima)并提高模型的泛化能力。 在PyTorch中,官方提供了实现模型权值平均的方法。 这里…

数据结构(2023-2024)

一、判断题 1.队列是一种插入和删除操作分别在表的两端进行的线性表,是一种先进后出的结构。(F) 队列先进先出,在表的一端插入元素,在表的另一端删除元素。允许插入的一端称为队尾(rear)&#…

搭建Docker私有镜像服务器

一、前言 1、本文主要内容 基于Decker Desktop&Docker Registry构建Docker私有镜像服务器测试在CentOS 7上基于Docker Registry搭建公共Docker镜像服务器修改Docker Engine配置以HTTP协议访问Docker Registry修改Docker Engine配置通过域名访问Docker Registry配置SSL证书…

了解不同方式导入导出的速度之快

目录 一、用工具导出导入 Navicat(速度慢) 1.1、导入: 共耗时: 1.2、导出表 共耗时: 二、用命令语句导出导入 2.1、mysqldump速度快 导出表数据和表结构 共耗时: 只导出表结构 导入 共耗时&…

C#,字符串匹配算法(模式搜索)Z算法的源代码与数据可视化

Z算法也是模式搜索(Pattern Search Algorithm)的常用算法。 本文代码的运算效果: 一、Z 算法 线性时间模式搜索算法的Z算法,在线性时间内查找文本中模式的所有出现。 假设文本长度为 n,模式长度为 m,那么…

__init__中的__getattr__方法

结论: 在 __init__.py 文件中定义的 __getattr__ 方法,如果存在的话,通常用于处理包级别的属性访问。在包级别,__getattr__ 方法在导入模块时被调用,而不是在实例化包时。当你尝试访问包中不存在的属性时,__getattr__ 方法会被调用,给你一个机会来处理这个属性访问。 …

Linux第24步_安装windows下的VisualStudioCode软件

Windows下的VSCode安装后,还需要安装gcc编译器和g编译器。 gcc:编译C语言程序的编译器; g:编译C代码的编译器; 1、在Windows下安装VSCode; 双击“VSCodeUserSetup-x64-1.50.1.exe”,直到安装完成。 2、…
最新文章