python读取csv文件指定行的2种方法详解


Posted in Python onFebruary 13, 2020

csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格

python读取csv文件指定行的2种方法详解

就可以存储为csv文件,文件内容是:

No.,Name,Age,Score

1,Apple,12,98

2,Ben,13,97

3,Celia,14,96

4,Dave,15,95

假设上述csv文件保存为"A.csv",如何用Python像操作Excel一样提取其中的一行,也就是一条记录,利用Python自带的csv模块,有2种方法可以实现:

方法一:reader

第一种方法使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的内容:比如下面的代码可以读取csv的全部内容,以行为单位:

import csv
with open('A.csv','rb') as csvfile:
  reader = csv.reader(csvfile)
  rows = [row for row in reader]
print rows

得到:

[['No.', 'Name', 'Age', 'Score'],

['1', 'Apple', '12', '98'],

['2', 'Ben', '13', '97'],

['3', 'Celia', '14', '96'],

['4', 'Dave', '15', '95']]

要提取其中第二行,可以用下面的代码:

import csv
with open('A.csv','rb') as csvfile:
  reader = csv.reader(csvfile)
  for i,rows in enumerate(reader):
    if i == 2:
    row = rows
print row

得到:

['2', 'Ben', '13', '97']

这种方法是通用的方法,要事先知道行号,比如Ben的记录在第2行,而不能根据'Ben'这个名字查询。这时可以采用第二种方法:

方法二:DictReader

第二种方法是使用DictReader,和reader函数类似,接收一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题(即列头)。用下面的代码可以看到DictReader的结构:

import csv
with open('A.csv','rb') as csvfile:
  reader = csv.DictReader(csvfile)
  rows = [row for row in reader]
print rows

得到:

[{'Age': '12', 'No.': '1', 'Score': '98', 'Name': 'Apple'},

{'Age': '13', 'No.': '2', 'Score': '97', 'Name': 'Ben'},

{'Age': '14', 'No.': '3', 'Score': '96', 'Name': 'Celia'},

{'Age': '15', 'No.': '4', 'Score': '95', 'Name': 'Dave'}]

如果我们想用DictReader读取csv的某一列,就可以用列的标题查询:

import csv
with open('A.csv','rb') as csvfile:
  reader = csv.DictReader(csvfile)
  for row in reader:
    if row['Name']=='Ben':
    print row

就得到:

{'Age': '13', 'No.': '2', 'Score': '97', 'Name': 'Ben'}

可见,DictReader很适合读取csv的的行(记录)。

Python 相关文章推荐
Django框架下在视图中使用模版的方法
Jul 16 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
python中eval与int的区别浅析
Aug 11 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Python函数参数定义及传递方式解析
Jun 10 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
Python破解极验滑动验证码详细步骤
May 21 Python
Python类中self参数用法详解
Feb 13 #Python
python字符串下标与切片及使用方法
Feb 13 #Python
python时间与Unix时间戳相互转换方法详解
Feb 13 #Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 #Python
python 实现字符串下标的输出功能
Feb 13 #Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 #Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 #Python
You might like
php文本转图片自动换行的方法
2013/03/13 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
js获取ip和地区
2017/03/10 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
python win32 简单操作方法
2017/05/25 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
Python中文件的读取和写入操作
2018/04/27 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
对python的输出和输出格式详解
2018/12/08 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python3转换code128条形码的方法
2019/04/17 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
Python连接mysql方法及常用参数
2020/09/01 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
班主任经验交流会主持词
2014/04/01 职场文书
节约用电标语
2014/06/17 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
利用Python实现Picgo图床工具
2021/11/23 Python
python3 字符串str和bytes相互转换
2022/03/23 Python
一文解答什么是MySQL的回表
2022/08/05 MySQL