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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python常用的日期时间处理方法示例
Feb 08 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
python语言线程标准库threading.local解读总结
Nov 10 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python开发一款翻译工具
Oct 10 Python
Django model class Meta原理解析
Nov 14 Python
Python读取文件夹下的所有文件实例代码
Apr 02 Python
Python实战之大鱼吃小鱼游戏的实现
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
计数器详细设计
2006/10/09 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
详解Django框架中的视图级缓存
2015/07/23 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Python实现仿射密码的思路详解
2020/04/23 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
五型班组建设方案
2014/02/10 职场文书
工商治理实习生的自我评价分享
2014/02/20 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
Python创建SQL数据库流程逐步讲解
2022/09/23 Python