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打包工具distutils、setuptools
Apr 20 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
Python爬虫之正则表达式的使用教程详解
Oct 25 Python
Python 3.8新特征之asyncio REPL
May 28 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
Django多数据库的实现过程详解
Aug 01 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
python统计文章中单词出现次数实例
Feb 27 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 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 session机制
2011/07/17 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
php实现生成验证码实例分享
2016/04/10 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
js中widow.open()方法使用详解
2013/07/30 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
晚宴邀请函范文
2014/01/15 职场文书
优秀教师获奖感言
2014/01/31 职场文书
个人作风剖析材料
2014/02/02 职场文书
搞笑爱情保证书
2014/04/29 职场文书
文明工地标语
2014/06/16 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript