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切片用法实例教程
Sep 08 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python中的set实现不重复的排序原理
Jan 24 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
pandas 时间格式转换的实现
Jul 06 Python
Python变量作用域LEGB用法解析
Feb 04 Python
Python如何实现爬取B站视频
May 20 Python
学习python需要有编程基础吗
Jun 02 Python
python实现取余操作的简单实例
Aug 16 Python
Python初识逻辑与if语句及用法大全
Aug 07 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中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Django实现跨域请求过程详解
2019/07/25 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
Django url 路由匹配过程详解
2021/01/22 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
英国景点门票网站:attractiontix
2019/08/27 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
安全标语大全
2014/06/10 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
城管年度个人总结
2015/02/28 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
Java设计模式之享元模式示例详解
2022/03/03 Java/Android