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实现各种排序算法的代码示例总结
Dec 11 Python
21行Python代码实现拼写检查器
Jan 25 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
Python实现句子翻译功能
Nov 14 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
如何使用Python 打印各种三角形
Jun 28 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
Python基础之Socket通信原理
Apr 22 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 Python
python中os.path.join()函数实例用法
May 26 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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php设计模式 Facade(外观模式)
2011/06/26 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
初中班主任评语大全
2014/04/24 职场文书
个人课题方案
2014/05/08 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
先进教师个人总结
2015/02/11 职场文书
辩护意见书
2015/06/04 职场文书
iPhone13再次曝光
2021/04/15 数码科技
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS