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的Django框架加载模版的方式
Jul 20 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python实现电脑自动关机
Jun 20 Python
Python函数中不定长参数的写法
Feb 13 Python
python中的colorlog库使用详解
Jul 05 Python
Django中create和save方法的不同
Aug 13 Python
Django自带日志 settings.py文件配置方法
Aug 30 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
用python发送微信消息
Dec 21 Python
OpenCV实现常见的四种图像几何变换
Apr 01 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
yii操作cookie实例简介
2014/07/09 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
json简单介绍
2008/06/10 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
Python实现矩阵转置的方法分析
2017/11/24 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
20行python代码实现人脸识别
2019/05/05 Python
python能做什么 python的含义
2019/10/12 Python
python实现宿舍管理系统
2019/11/22 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
大专毕业生求职信
2014/07/05 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
律师函格式范本
2015/05/27 职场文书
优质服务标语口号
2015/12/26 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
Redis 哨兵机制及配置实现
2022/03/25 Redis