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抓取京东商城手机列表url实例代码
Dec 18 Python
python 接口测试response返回数据对比的方法
Feb 11 Python
python使用mysql的两种使用方式
Mar 07 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
OpenCV+Python--RGB转HSI的实现
Nov 27 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
python3 xpath和requests应用详解
Mar 06 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
史上最详细的Python打包成exe文件教程
Jan 17 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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
10条PHP编程习惯助你找工作
2008/09/29 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
javascript时区函数介绍
2012/09/14 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
js charAt的使用示例
2014/02/18 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
深入理解Django-Signals信号量
2019/02/19 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
如何用python处理excel表格
2020/06/09 Python
Python自省及反射原理实例详解
2020/07/06 Python
Python必须了解的35个关键词
2020/07/16 Python
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
人力资源管理专业学生自我评价
2013/11/20 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
教书育人演讲稿
2014/09/11 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL