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 Trie树实现字典排序
Mar 28 Python
gearman的安装启动及python API使用实例
Jul 08 Python
深入理解Python中的元类(metaclass)
Feb 14 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
python中reload(module)的用法示例详解
Sep 15 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
python3使用matplotlib绘制散点图
Mar 19 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
python时间序列按频率生成日期的方法
May 14 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 Python
用python中的matplotlib绘制方程图像代码
Nov 21 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 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除数取整示例
2014/04/24 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
vuex进阶知识点巩固
2018/05/20 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
python实现Dijkstra静态寻路算法
2019/01/17 Python
python学生管理系统
2019/01/30 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
Python-opencv 双线性插值实例
2020/01/17 Python
使用Django清空数据库并重新生成
2020/04/03 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
经典c++面试题六
2012/01/18 面试题
银行实习自我鉴定
2013/10/12 职场文书
管道维修工岗位职责
2013/12/27 职场文书
诚信考试标语
2014/06/24 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
详解Django的MVT设计模式
2021/04/29 Python
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
JavaScript组合继承详解
2021/11/07 Javascript