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 相关文章推荐
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
python程序需要编译吗
Jun 19 Python
TensorFlow Autodiff自动微分详解
Jul 06 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设计模式之装饰者模式
2012/02/29 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php对数组排序的简单实例
2013/12/25 PHP
php url路由入门实例
2014/04/23 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
php实现微信支付之现金红包
2018/05/30 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
js命名空间写法示例
2015/12/18 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python实现分数序列求和
2020/02/25 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
元旦晚会策划方案
2014/02/18 职场文书
医学专业大学生求职信
2014/07/12 职场文书
校运会宣传稿大全
2015/07/23 职场文书
外出学习心得体会范文
2016/01/18 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python