Python从0到100(二十二):用Python读写CSV文件

在这里插入图片描述

一、CSV文件概述

CSV,即逗号分隔值(Comma Separated Values),是一种以纯文本形式存储表格数据的通用格式。它因其简洁和易于使用而广泛应用于数据交换,如在数据库、电子表格等应用程序中导入和导出数据。CSV文件的纯文本特性使其与操作系统和编程语言无关,大多数编程语言都提供了处理CSV文件的功能,使其在数据处理和科学领域中极为流行。

CSV文件的主要特点包括:

  1. 纯文本格式:使用特定字符集(如ASCII、Unicode、GB2312等);
  2. 记录组成:由多条记录构成,通常每行代表一条记录;
  3. 字段分隔:记录内的字段(列)通过分隔符(如逗号、分号、制表符)分隔;
  4. 字段序列一致:所有记录具有相同的字段顺序。

CSV文件不仅可用文本编辑器查看和编辑,还能在如Excel这样的电子表格软件中打开,几乎与原生电子表格文件无异。数据库系统通常支持将数据导出为CSV格式,也支持从CSV文件导入数据。

二、将数据写入CSV

假设我们需要将五个学生的三门课程成绩保存到CSV文件中。在Python中,我们可以使用内置的csv模块来实现。csv模块的writer对象允许我们通过writerowwriterows方法将数据写入CSV文件。以下是实现的示例代码:

import csv
import random# 打开文件用于写入,'w'模式表示写入,如果文件不存在则创建
with open('scores.csv', 'w', newline='', encoding='utf-8') as file:writer = csv.writer(file)# 写入表头writer.writerow(['姓名', '语文', '数学', '英语'])# 学生姓名列表names = ['关羽', '张飞', '赵云', '马超', '黄忠']for name in names:# 为每个学生生成三门课程的随机分数,并插入姓名scores = [random.randint(50, 100) for _ in range(3)]scores.insert(0, name)# 写入一行数据writer.writerow(scores)

执行上述代码后,生成的CSV文件内容示例:

姓名,语文,数学,英语
关羽,98,86,61
张飞,86,58,80
赵云,95,73,70
马超,83,97,55
黄忠,61,54,87

csv.writer函数还允许我们通过dialect参数指定CSV的方言,默认为excel。我们也可以通过delimiterquotecharquoting参数自定义分隔符、引用字符和引用方式。例如,当字段中包含特殊字符时,使用引用字符可以避免歧义。以下是对csv.writer的一个简单自定义示例:

# 使用竖线作为分隔符,并设置所有字段都被引用
writer = csv.writer(file, delimiter='|', quoting=csv.QUOTE_ALL)

使用自定义设置生成的CSV文件内容示例:

"姓名"|"语文"|"数学"|"英语"
"关羽"|"98"|"86"|"61"
"张飞"|"86"|"58"|"80"

三、从CSV文件读取数据

要读取CSV文件中的数据,我们可以使用csv.reader对象,它是一个迭代器,允许我们通过next方法或for-in循环来获取数据。以下是读取CSV文件的示例代码:

import csv# 打开文件用于读取,'r'模式表示读取
with open('scores.csv', 'r', encoding='utf-8') as file:reader = csv.reader(file, delimiter='|')# 遍历CSV文件中的每一行for line_num, data_list in enumerate(reader, start=1):print(f"行号: {line_num}\t", end='')for elem in data_list:print(f"{elem}\t", end='')print()  # 换行

注意:在对csv.reader对象进行for循环时,每次迭代会得到一个包含该行所有字段的列表。

四、小结

在Python数据分析领域,pandas库是一个强大的工具。它提供了read_csvto_csv函数,用于简化CSV文件的读写操作。read_csv函数可以将CSV数据读取为DataFrame对象,而DataFramepandas中用于数据处理的核心数据结构,它包含了丰富的数据处理功能,如数据清洗、转换和聚合等。相对地,to_csv函数可以将DataFrame对象中的数据导出到CSV文件中,实现数据的持久化存储。这些函数相比原生的csv.readercsv.writer提供了更高级的功能和更好的易用性。

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

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

相关文章

Linux线程(四) 生产者消费者模型

目录 一、什么是生产者消费者模型 基本概念 优点以及应用场景 二、 基于阻塞队列的生产者消费者模型 三、POSIX信号量 四、基于环形队列的生产消费模型 一、什么是生产者消费者模型 Linux下的生产者消费者模型是一种经典的多线程或多进程编程设计模式,它用于解…

分体工业读写器的适用场景有哪些?

工业读写器根据设计方式不同,可分为一体式读写器和分体式读写器,不同读写器特点不同,适用场景也不同,下面我们就一起来了解一下超高频分体读写器适用场景有哪些。 超高频分体读写器介绍 超高频分体读写器是一种射频识别(RFID)设…

【ARM】解决Keil MDK报错提示找不到编译器路径的问题

问题场景: 在打开MDK的时候,会跳出提示 Warning: Registered ARM Compiler Version not found in path: ARMCLANG!”(如图1)这样的提示信息。提示无法找到编译器的路径,这样的问题经常出现在添加旧版本编译器过程中操…

消防物资存储|基于SSM+vue的消防物资存储系统的设计与实现(源码+数据库+文档)

消防物资存储系统 目录 基于SSM+vue的消防物资存储系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1用户功能模块 2 管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介…

界面控件Telerik UI for WPF中文教程 - 如何轻松实现日期范围选择?

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…

物联网促进信息化——​青创智通工业物联网解决方案​

随着传感器网络(WSN)、无线射频识别(RFID)以及微电子机械系统(MEIVIS)等技术的不断成熟,扩展了人们对信息获取和使用的能力,并将提高制造效率、改善产品质量、降低产品成本和资源消耗、为用户提供更加透明和个性化的服…

【漏洞复现】泛微OA E-Cology SignatureDownLoad SQL注入漏洞

漏洞描述: 泛微OA E-Cology是一款面向中大型组织的数字化办公产品,它基于全新的设计理念和管理思想,旨在为中大型组织创建一个全新的高效协同办公环境。泛微OA E-Cology SignatureDownLoad存在SQL注入漏洞,允许攻击者非法访问和操…

unity 学习笔记

一、 事件顺序 gameObjet Instantiate gameObjet.自定义函数 gameObjet.Start 二、预设体使用 例子:Button 点击创建 预设体 BagPanel

常类API(Math,System,Runtime)

1、Math 是帮助我们用于进行数学计算的工具类私有化构造方法,所有的方法都是静态的 方法名 说明public static int abs(int a) 获取参数绝对值 public static double ceil(int a)向上取整public static double floor(int a)向下取…

axios传参方式

params参数通常用于GET请求添加查询参数,POST一般使用data参数传递参数 1、data传参 1-1、表单传参 // 方法定义 export function save(data) {return request({url: /url,headers: { Content-Type: multipart/form-data },method: post,data: data,}) }// 调用函…

Flutter 3.22 发布,快来看看有什么更新吧?

Flutter 3.22 发布,快来看看有什么更新吧? 本次 Flutter 跟随 Google I/O 发布的版本是 3.22 ,该版本主要还是带来了 Vulkan backend 和 Wasm Native 的落地,另外还有一个重点就是 Dart macros ,但是它更多只是一个预…

Windows11系统配置WSL2网络使它支持LAN访问

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、WSL2安装二、使用步骤1.NAT2.镜像 三、写在最后总结 前言 WSL2的出现感觉真的是一个惊喜,又想玩Linux,又怕日用搞不了的最佳替代方…