python学习笔记——csv文件

news2024/12/24 11:42:44

目录

一、csv文件和Excel文件区别

二、手动转换(文本与列表)

①普通的写(列表嵌套转成文本的表格形式)

②普通的读(文本的表格形式转成列表嵌套)

 二、csv库-读

1、CSV库-读-reader()

2、CSV库-读-DictReader()

 

三、csv库-写

1、CSV库-写-列表形式

2、CSV库-写-字典形式


一、csv文件和Excel文件区别

关键区别:

CSV是一种用于将表格信息保存到扩展名为.csv的带分隔符的文本文件中的格式,而Excel是一种电子表格,可以将文件保留为其专有格式,即xls或xlsx。

CSV是纯文本格式,具有一系列用逗号分隔的值,而Excel是一个二进制文件,其中包含有关工作簿中所有工作表的信息。

CSV文件无法对数据执行操作,而Excel可以对数据执行操作。

CSV文件更快,并且消耗的内存更少,而Excel在导入数据时消耗的内存更多。

可以使用Windows中的任何文本编辑器打开CSV文件,而不能使用文本编辑器打开Excel文件。

相似之处:

两者都可以在电子表格程序中打开

两者都以表格格式(即列和行)存储数据

两者都可以使用Excel中的功能来操纵。

二、手动转换(文本与列表)

①普通的写(列表嵌套转成文本的表格形式)

a = [['姓名','年龄','身高','体重','分数'],
     ['a1', '10', '150', '40', '98'],
     ['a2', '8', '163', '46', '86'],
     ['a3', '11', '160', '55', '92']]

file = open('a.csv',mode='w')
for i in a:
    file.write(','.join(i)+'\n')

file.close()

 

 

②普通的读(文本的表格形式转成列表嵌套)

a = []
file = open('a.csv',mode='r')
lines = file.readlines()#获取每一行,一行一个列表。
for i in lines:
    a.append(i.replace('\n','').split(','))#字符串去换行,字符串转列表

file.close()
print(a)

[['姓名', '年龄', '身高', '体重', '分数'], ['a1', '10', '150', '40', '98'], ['a2', '8', '163', '46', '86'], ['a3', '11', '160', '55', '92']]

 二、csv库-读

1、CSV库-读-reader()

以列表的形式读取数据,不用手动处理换行和转列表。

import csv#自带的库

a = []
file = open('a.csv',mode='r')
msg_list = csv.reader(file)
for i in msg_list:
    a.append(i)

file.close()
print(a)

2、CSV库-读-DictReader()

除了第一行,每一行是一个字典。

import csv#自带的库

file = open('a.csv',mode='r')
msg_dic = csv.DictReader(file)
for i in msg_dic:#遍历列表(msg_dic相当于列表)
    print(dict(i))#每一行是一个字典

file.close()

 

三、csv库-写

1、CSV库-写-列表形式

csv.writer(file)#传入打开的文件
writerow(list)#传入列表
writerows(lists)#传入嵌套列表

 csv文件写入时出现空行问题:设置newline=''

file = open('demo.csv', 'w', newline='')
import csv  # 自带的库

a = [['姓名', '年龄', '身高', '体重', '分数'],
     ['a1', '10', '150', '40', '98'],
     ['a2', '8', '163', '46', '86'],
     ['a3', '11', '160', '55', '92']]


file = open('a2.csv',mode='w')
csv_writer = csv.writer(file)
csv_writer.writerows(a)

file.close()

2、CSV库-写-字典形式

csv.DictWriter(file,head_list)#传入打开的文件,传入标题列表
writeheader()#写入表头,不需要单独传入参数
writerows(lists)#传入列表,列表里套着字典。
import csv  # 自带的库

a = [{'姓名': 'a1', '年龄': '10', '身高': '150', '体重': '40', '分数': '98'},
    {'姓名': 'a2', '年龄': '8', '身高': '163', '体重': '46', '分数': '86'},
    {'姓名': 'a3', '年龄': '11', '身高': '160', '体重': '55', '分数': '92'}]
a_head = ['姓名', '年龄', '身高', '体重', '分数']

file = open('a2.csv',mode='w')
csv_writer = csv.DictWriter(file,a_head)
csv_writer.writeheader()
csv_writer.writerows(a)

file.close()

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

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

相关文章

基于YOLO的酸枣病虫害检测识别实践

在我前面的博文中对于农作物病虫害的检测识别已经做过了,不过那个主要是针对水稻的,文章如下:《基于yolov5的轻量级水稻虫害目标检测项目实践》感兴趣的话可以自行移步阅读。这里主要是针对酸枣常见的几种病虫害检测检测识别,首先…

苹果电脑如何录屏?3个方法,轻松学会

苹果电脑是很多创作者、视频制作人和经常工作用户的选择,但是如何在苹果电脑上录制高质量的屏幕视频呢?苹果电脑如何录屏?本文将介绍3种不同的方法,帮助小伙伴轻松学会如何在苹果电脑上录制屏幕视频。 方法一:使用Mac自…

假设检验的基本思想

假设检验 首先了解参数估计,比如有服从正态分布的数据集X∼N(μ,σ2)X\sim N(\mu,\sigma^{2})X∼N(μ,σ2),我们希望根据样本x1,...xnx_{1},...x_{n}x1​,...xn​估计出参数μ,σ\mu,\sigmaμ,σ,这些参数可以是一个具体值,也可以…

【C++】Windows动态库【.DLL文件】制作方法总结

如题,我们本篇介绍如何制作DLL,将代码类中的方法以接口的形式暴露出来给exe程序使用。会涉及类厂创建方法实例、声明DLL接口、.def文件的使用等。 目录 一、DLL介绍 二、C制作DLL文件 2.1 DLL端 2.2 调用端 三、DLL导出类方法 四、COM技术制作DLL…

扎心话题 | 设计院背后的潜规则你知道吗?

大家好,我是建模助手。 大家都知道,在过去的2022年经济是真难!以小编所在的广东为例,全年GDP增长仅1.9%。 这个数据足以呈现一个社会现象——不仅消费力咔咔下降,各行各业更有不同程度地嗝屁。这其中也包括一些设计院…

只要一直向前定能到达远方,社科院与杜兰大学金融管理硕士项目为你注入动力

在人生这条道路上,我们很远的路要走,不管前方是否平坦,我们只要坚持前向,终将抵达远方。一路上我们付出很多,也收获很多。想要变得更强大,就要不断优化自身,积攒更多的能量,社科院与…

Flask入门(10):Flask使用SQLAlchemy

目录11.SQLAlchemy11.1 简介11.2 安装11.3 基本使用11.4 连接11.5 数据类型11.6 执行原生sql11.7 插入数据11. 8 删改操作11.9 查询11.SQLAlchemy 11.1 简介 SQLAlchemy的是Python的SQL工具包和对象关系映射,给应用程序开发者提供SQL的强大功能和灵活性。它提供了…

浅析无人值守+智慧巡检变电站安全管控系统设计方案

一、项目背景 安全是电力生产的基石,确保电网安全和人身安全,是电网企业安全工作的出发点和落脚点。 随着智能信息化技术应用越来越广泛,智能信息化现场安全管理是近年来基于智能安全巡检技术下发展起来的现场作业安全管理新技术。 变电站运…

【机器学习】朴素贝叶斯算法

朴素贝叶斯(Naive Bayes)是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。由于朴素贝叶斯计算联合概率,所以朴素贝叶斯模型属于生成式模型。经典应用案例包括:文本分类、垃圾邮件过滤等。 1.贝叶斯公式…

rust 安装

rust 安装一、需要一个c的环境二、配置环境变量三、开始安装一、需要一个c的环境 安装Visual Studio 二、配置环境变量 Rust需要安装两个东西,一个是rustup,一个是cargo。所以你需要设置两个环境变量来分别指定他们的安装目录。 通过RUSTUP_HOME指定…

滤波算法:经典卡尔曼滤波

卡尔曼滤波实质上就是基于观测值以及估计值二者的数据对真实值进行估计的过程。预测步骤如图1所示: ​图1 卡尔曼滤波原理流程图 假设我们能够得到被测物体的位置和速度的测量值 ​,在已知上一时刻的最优估计值 ​以及它的协方差矩阵 的条件下&#xff…

ChatGPT热潮背后,金融行业大模型应用路在何方?——金融行业大模型应用探索

ChatGPT近两个月以来不断引爆热点,对人工智能应用发展的热潮前所未有地高涨,ChatGPT所代表的大模型在语义理解、多轮交互、内容生成中所展现的突出能力令人惊喜。而人工智能技术在金融行业的落地应用仍然面临挑战,虽然已经让大量宝贵的人力从…

易基因|ChIP-seq等组学研究鉴定出结直肠癌的致癌超级增强子:Nature子刊

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。超级增强子(Super enhancer)是一类包含多个普通增强子的大簇,主要富集高密度的转录因子、辅助因子及增强子相关表观修饰位点。与普通增强子相比&#xf…

canal实时同步mysql数据到elasticsearch(部署,配置,测试)

这里写目录标题简介工作原理MySQL主备复制原理canal 工作原理canal 使用流程环境搭建环境使用版本mysql配置修改配置创建从库权限账号创建测试数据库创建测试数据表elasticsearch配置创建索引建立映射canal的下载部署下载canal配置服务端 canal-deployer配置客户端canal-adapte…

Keysight E5061B网络分析仪

Keysight E5061B(安捷伦)网络分析仪可在 5 Hz 至 3 GHz 的宽频率范围内提供多功能的高性能网络分析。E5061B 提供了 ENA 系列共有的出色射频性能,还提供了成熟的 LF(低频)网络测量功能;包括带有内置 1 Mohm…

【Vue学习】Vue基本使用

1. 模板语法 插值:使用双大括号进行数据的插值,包括文本、JS表达式。动态属性:可以使用模板字符串。如果使用标签使用了v-html指令,那么标签中的子元素会被引入的html代码覆盖掉,同时也会存在xss风险。 2. compute…

Python + Airtest + poco + pytest + pytest-html 实现Android App自动化测试框架

Python Airtest poco pytest pytest-html 实现Android App自动化测试框架 一、背景 为了尝试除Appium外的测试框架,本文将介绍基于网易的airtest框架为基础,配合poco及pytest实现对Android App的自动化测试。 二、框架介绍 框架集成使用airtest p…

puzzle(1321)时间旅人

时间旅人 最强大脑同款项目。​​​​​​​ 每个指针会带动周围2圈指针一起带动,内圈8个旋转180度,外圈16个旋转90度,全部调整为朝上则胜利。 问题本质: 很明显,问题本质就是求每个格子的点击次数,最少为…

Mac mini 外接移动硬盘无法显示,磁盘工具装载报错显示 com apple diskmanagement disenter

使用“启动安全性实用工具”可确保 Mac 始终从您指定的启动磁盘以及合法的受信任操作系统启动。 如果您使用的是配备 Apple T2 安全芯片的 Mac,则“启动安全性实用工具”提供以下三项功能来帮助保护您的 Mac 免受未经授权的访问:固件密码保护、安全启动…

Java中安装Maven环境

Java中安装Maven环境 apache-maven-3.6.0 下载地址 云盘不限速下载 或者进入官网按下图下载 方法/步骤一 安装 打开压缩包,将maven压缩包解压至软件安装处,建议D根目录或其他,记住安装位置 类似于 方法/步骤二 环境变量配置 变量 1.新…