利用Python的csv(CSV)库读取csv文件并取出某个单元格的内容的学习过程

news2024/12/25 14:00:27

csv库在python3中是自带的。

利用它可以方便的进行csv文件内容的读取。

注意:要以gbk的编码形式打开,因为WPS的csv文件默认是gbk编码,而不是utf-8

01-读取表头并在打印每一行内容时一并输出表头

表头为第1行,现在要读取并打印出第2行的内容,并附加上表头信息的代码如下:

import csv

file_path = r'E:\Temp\test01.csv'

with open(file_path, 'r', newline='', encoding='gbk') as file:
    # 创建CSV字典文件读取器
    reader = csv.DictReader(file)

    # 读取第二行的各列内容并打印
    second_row = next(reader)

    for column_title, value in second_row.items():
        print(f"{column_title}: {value}")

运行效果如下:
在这里插入图片描述
在这里插入图片描述

如果要读取第3行的内容,代码如下:

import csv

file_path = r'E:\Temp\test01.csv'

with open(file_path, 'r', newline='', encoding='gbk') as file:
    # 创建CSV字典文件读取器
    reader = csv.DictReader(file)

    # 读取第三行的各列内容并打印
    second_row = next(reader)
    third_row = next(reader)

    for column_title, value in second_row.items():
        print(f"{column_title}: {value}")

运行效果如下:
在这里插入图片描述
在这里插入图片描述

02-涉及到的相关对象

02-01-DictReader对象:通过方法DictReader读取csv文件得到的DictReader对象

通过语句:reader = csv.DictReader(file)读取csv文件后,reader 是一个DictReader对象,其属性如下:
在这里插入图片描述
从中我们可以看出,在属性fieldnames中,存储了这个csv文件的表头。

另外,有个名叫line_num的存储了当前位于第几行【行数是从1开始算,不是从0开始算】,比如截图中的line_num的值为3,那么代表当前位于第3行。注意这个值是只读的,是不能修改的,它是基于当前的内存位置得出的。如果要改变它的值,我们只能通过类似于下面的语句去迭代增长内存位置,从而改变它的值:

current_row = next(reader)

或者:

for current_row in reader

这个值其实挺有用的,比如我可以设置我想读哪一行的内容,然后通过如上面的for循环去迭代DictReader对象,当这个值等于我设置的行数时,就可以去读取我想要的内容了。

02-02-每一行的内容实际上是一个字典对象

对于下面两句代码返回的对象:

    second_row = next(reader)
    third_row = next(reader)

看下面的这两张截图就知道了:
在这里插入图片描述

在这里插入图片描述
所以就不多说什么了。

03-读取表头并打印出指定行的内容的代码

假如要读第1000行的内容,咱们不可能去写999条语句second_row = next(reader)呀,根据02-01中对DictReader对象的属性line_num的分析,我们可以像下面这样写代码:

import csv

file_path = r'E:\Temp\test01.csv'

with open(file_path, 'r', newline='', encoding='gbk') as file:
    # 创建CSV字典文件读取器
    reader = csv.DictReader(file)

    # 读取到第1000行
    target_row_number = 1000

    for row in reader:
        if reader.line_num == target_row_number:
            # 在这里你可以处理目标行的内容
            for column_title, value in row.items():
                print(f"{column_title}: {value}")
            break  # 退出循环,因为我们已经读取到了目标行

我们把上面的 target_row_number的值换成2,运行效果如下:
在这里插入图片描述

在这里插入图片描述

我们把上面的 target_row_number的值换成3,运行效果如下:
在这里插入图片描述

在这里插入图片描述
从上面的结果来看,实现了我们的需求。

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

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

相关文章

搜维尔科技:【简报】元宇宙数字人赛道,《寒朵鹿》赏析!

寒朵鹿的外观是柔和无攻击性的小鹿拟人样,头上长有一对鹿角及鹿耳,虽然绝大部分雌鹿并不会长角,但由于寒朵鹿是AI的智能机器人,所以为了依照普遍大众对鹿的印象依旧帮她加上了角。 学校: 台北商业大学 选手&#xff1…

算法通关村番外篇-LeetCode编程从0到1系列五

大家好我是苏麟 , 今天带来算法通关村番外篇-LeetCode编程从0到1系列五 . 数学 1523. 在区间范围内统计奇数数目 描述 : 给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。 题目 : LeetCode 1523. 在区间范围内统计奇…

HNU-算法设计与分析-实验3

算法设计与分析实验3 计科210X 甘晴void 202108010XXX 目录 文章目录 算法设计与分析<br>实验31 用Dijkstra贪心算法求解单源最短路径问题问题重述证明模板&#xff1a;Dijkstra算法代码验证算法分析 1【扩展】 使用堆优化的Dijkstra原因代码算法分析验证 2 回溯法求解…

Docker-01-安装基础命令

Docker-01-安装&基础命令 文章目录 Docker-01-安装&基础命令一、Docker是什么&#xff1f;二、安装Docker①&#xff1a;卸载旧版②&#xff1a;配置Docker的yum库③&#xff1a;安装Docker④&#xff1a;启动和校验⑤&#xff1a;配置镜像加速01&#xff1a;注册阿里云…

14.鸿蒙HarmonyOS App(JAVA)时钟组件计时器倒计时单选按钮复选框开关switch与开关按钮ToggleButton图像组件示范

鸿蒙HarmonyOS App(JAVA) 时钟组件 计时器 倒计时 单选按钮 复选框 开关switch 开关按钮ToggleButton 图像组件 ability_main.xml <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:ohos"http://schemas.huawei.co…

C++刷题 -- 栈和队列

C刷题 – 栈和队列 文章目录 C刷题 -- 栈和队列1.用栈实现队列2.用队列实现栈3.有效的括号4.前 K 个高频元素 1.用栈实现队列 力扣链接 一个栈自然实现不了队列功能&#xff0c;需要使用两个栈一个输入栈&#xff0c;一个输出栈队列是先入先出&#xff0c;当队列push操作&…

pom文件冲突引起的Excel无法下载

问题一&#xff1a;之前生产环境上可以进行下载Excel的功能突然不能用了 报错提示信息&#xff1a; NoClassDefFoundError: Could not initialize class org.apache.poi.xssf.usermodel.XSSFWorkbook&#xff0c; 在最开始初始化的时候找不到对应的类&#xff0c;虽然我的Libr…

解决WIN11 22H2版本导致连接共享打印机提示错误0x00000709问题

脚本下载地址&#xff1a;打印机修复官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 问题截图 解决方法 下载WIN11 22H2共享打印机修复补丁&#xff0c;打开目录&#xff0c;选中fix-printer.bat&#xff0c;鼠标右键&#xff0c;点击以管理员身份运行。 在弹出警告窗…

03.坦克大战项目-java事件处理机制

03. 坦克大战项目-java事件处理机制 01. 事件处理机制-看个问题 1. 小球移动 假如现在我们有一个程序&#xff0c;程序里我们画了一个黑色的小球。我们该怎样让小球收到键盘控制&#xff0c;上下左右移动。现在我们编写一个程序&#xff0c;来实现上述的问题 2. 小球移动案…

MYSQL生产安装

MYSQL生产安装 docker run --name mysql_master \ -e MYSQL_ROOT_PASSWORD1973526541 \ -v /root/mysql_master/data:/var/lib/mysql \ -v /root/mysql_master/log:/var/log/mysql \ -v /root/mysql_master/conf:/etc/mysql/conf.d \ -dp 3306:3306 \ mysql:5.7挂载成功。 解…

【BBuf的CUDA笔记】十二,LayerNorm/RMSNorm的重计算实现

带注释版本的实现被写到了这里&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/apex 由于有很多个人理解&#xff0c;读者可配合当前文章谨慎理解。 0x0. 背景 我也是偶然在知乎的一个问题下看到这个问题&#xff0c;大概就是说在使用apex的…

小程序学习基础(首页展示)

原理通过首页展示的方式设置一个按钮&#xff0c;然后点击按钮跳转到相应的页面即可。 一 在js中定义一个需要展示页面的数组 二 在页面中使用fou循环来遍历其中的数据&#xff0c;并展示出来 页面代码 <!--index.wxml--> <navigation-bar title"牧原" …

【嵌入式学习笔记-02】什么是库文件,静态库的制作和使用,动态库的制作和使用,动态库的动态加载

【嵌入式学习笔记-02】什么是库文件&#xff0c;静态库的制作和使用&#xff0c;动态库的制作和使用&#xff0c;动态库的动态加载 文章目录 什么是库文件&#xff1f;编程模型的发展什么是库文件&#xff1f; 静态库的制作和使用动态库的制作和使用动态库的动态加载 什么是库文…

只要3步,教你搞定网工领导满意的年终总结

你们好&#xff0c;我是老杨。 2024年的总结你们都写完了吗&#xff1f; 早的大厂都已经收了一波总结了&#xff0c;等着大年三十之前再搞个年终述职&#xff0c;这一年就算是齐活了。 老生常谈&#xff0c;但每年又不得不谈的总结&#xff0c;咱们今天就聊聊这个。 不管你是…

Mac版sublime快捷键大全

1 对应关系 标志 键名 ⌘ command ⇧ shift ↩ 回车 ↑ 上 ↓ 下 ⌃ control ⌥ option 红色标记的是常用的快捷键。 2 编辑 按键 功能 ⌘ X 剪切当前行 ⌥ 拖动鼠标 垂直选中 ⌘ ↩ 在当前行之后换行&#xff0c;无论鼠标在哪里 ⌘ ⇧ ↩ 再当前行之前换行&#xff0c…

【LV12 DAY20 RTC实验】

编程实现通过LED状态显示当前电压范围&#xff0c;并打印产生低压警报时的时间 注&#xff1a; 电压在1501mv~1800mv时&#xff0c;LED2、LED3、LED4、LED5点亮 电压在1001mv~1500mv时&#xff0c;LED2、LED3、LED4点亮 电压在501mv~1000mv时&#xff0c;LED2、LED3点亮 电压在…

常用界面设计组件 —— 字符串与输入输出组件(QT)

2.2 字符串与输入输出组件2.2.1 字符串与数值之间的转换2.2.2 QString的常用功能 2.2 字符串与输入输出组件 2.2.1 字符串与数值之间的转换 界面设计时使用最多的组件恐怕就是QLabel和 QLineEdit了&#xff0c;QLabel用于显示字符串&#xff0c;QLineEdit用于 显示和输入字符…

设计模式⑥ :访问数据结构

一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所以会看看书&#xff0c;但是又记不住&#xff0c;所以决定开始写"抄书"系列。本系列大部分内容都是来源于《 图解设计模式》&#xff08;【日】结城浩 著&#xff09;。该系列文章可随意转载。 …

为什么要找实习以及如何更好地度过实习期

前言 在职业发展的旅程中&#xff0c;实习是一个至关重要的阶段。不论是在大学生涯的尾声&#xff0c;还是在职场新人的起步阶段&#xff0c;寻找实习机会都是一项关键任务。然而&#xff0c;为什么要找实习&#xff1f;这个问题背后蕴含着更深层次的意义和价值。在这篇博客中…

Unity之物理系统

专栏的上一篇角色控制器控制角色移动跳崖&#xff0c;这一篇来说说Unity的物理系统。 本篇小编还要带大家做一个碰撞检测效果实例&#xff0c;先放效果图&#xff1a;流星撞击地面产生爆炸效果 一、Rigidbody 我们给胶囊添加了 Rigidbody 组件它才有的重力&#xff0c;我们来…