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之间的那些事
Jan 07 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
Python内置函数reversed()用法分析
Mar 20 Python
python unittest实现api自动化测试
Apr 04 Python
python实现简单http服务器功能
Sep 17 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
python中rb含义理解
Jun 18 Python
Python自省及反射原理实例详解
Jul 06 Python
Django rest framework分页接口实现原理解析
Aug 21 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
Python移位密码、仿射变换解密实例代码
Jun 27 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登录环节防止sql注入的方法浅析
2014/06/30 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
tab栏切换原理
2017/03/22 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
JS实现密码框效果
2020/09/10 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
Python random模块常用方法
2014/11/03 Python
Python fileinput模块使用实例
2015/06/03 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Django多个app urls配置代码实例
2020/11/26 Python
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
写给女朋友的道歉信
2014/01/12 职场文书
个人自我剖析材料
2014/09/30 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
2014年商场工作总结
2014/11/22 职场文书
介绍长城的导游词
2015/01/30 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
小学校长个人总结
2015/03/03 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书