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 ljust rjust center输出
Sep 06 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
Python中is和==的区别详解
Nov 15 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
Python测试Kafka集群(pykafka)实例
Dec 23 Python
Python修改DBF文件指定列
Dec 19 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 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
关于尾递归的使用详解
2013/05/02 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
JQuery小知识
2010/10/15 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
node.js实现快速截图
2016/08/27 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
js控制div层的叠加简单方法
2016/10/15 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
centos7中安装python3.6.4的教程
2019/12/11 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
天鹅的故事教学反思
2014/02/04 职场文书
元宵节主持词
2014/03/25 职场文书
工程材料采购方案
2014/05/18 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
走群众路线剖析材料
2014/10/09 职场文书
预备党员考察意见范文
2015/06/01 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
vue如何清除浏览器历史栈
2022/05/25 Vue.js