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 相关文章推荐
python实现360皮肤按钮控件示例
Feb 21 Python
python实现在sqlite动态创建表的方法
May 08 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
Pytorch之Variable的用法
Dec 31 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 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
实用函数9
2007/11/08 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
jQuery功能函数详解
2015/02/01 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
javascript每日必学之循环
2016/02/19 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
vue的for循环使用方法
2019/02/12 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python的Django框架中的Context使用
2015/07/15 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
二年级数学教学反思
2014/01/21 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
一文搞懂php的垃圾回收机制
2021/06/18 PHP
JavaScript异步操作中串行和并行
2021/11/20 Javascript
一文搞懂Redis中String数据类型
2022/04/03 Redis
win7配置本地ftp服务器的图文教程
2022/08/05 Servers