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开发之文件操作用法实例
Nov 13 Python
python操作mysql数据库
Mar 05 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
Python计算信息熵实例
Jun 18 Python
django rest framework 过滤时间操作
Jul 12 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
Jan 07 Python
python实现大文本文件分割成多个小文件
Apr 20 Python
python实现简单石头剪刀布游戏
Oct 24 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
详解AngularJS实现表单验证
2015/12/10 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
Vue指令指令大全
2019/02/09 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python运算符重载用法实例
2015/05/28 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
python3多线程知识点总结
2019/09/26 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python过滤序列元素的方法
2020/07/31 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
《池塘边的叫声》教学反思
2014/04/12 职场文书
铁路安全事故反思
2014/04/26 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL