使用Python对Csv文件操作实例代码


Posted in Python onMay 12, 2017

csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格:

使用Python对Csv文件操作实例代码

就可以存储为csv文件,文件内容是:

No.,Name,Age,Score
1,mayi,18,99
2,jack,21,89
3,tom,25,95
4,rain,19,80

假设上述csv文件保存为"test.csv"

1.读文件

如何用Python像操作Excel一样提取其中的一列,即一个字段,利用Python自带的csv模块,有两种方法可以实现:

第一种方法使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的内容:比如下面的代码可以读取csv的全部内容,以行为单位:

#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

import csv

#读
with open("test.csv", "r", encoding = "utf-8") as f:
  reader = csv.reader(f)
  rows = [row for row in reader]

print(rows)

得到:

[['No.', 'Name', 'Age', 'Score'],
 ['1', 'mayi', '18', '99'],
 ['2', 'jack', '21', '89'],
 ['3', 'tom', '25', '95'],
 ['4', 'rain', '19', '80']]

要提取其中某一列,可以用下面的代码:

#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

import csv

#读取第二列的内容
with open("test.csv", "r", encoding = "utf-8") as f:
  reader = csv.reader(f)
  column = [row[1] for row in reader]

print(column)

得到:

['Name', 'mayi', 'jack', 'tom', 'rain']

注意从csv读出的都是str类型。这种方法要事先知道列的序号,比如Name在第2列,而不能根据'Name'这个标题查询。这时可以采用第二种方法:

第二种方法是使用DictReader,和reader函数类似,接收一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题(即列头)。用下面的代码可以看到DictReader的结构:

# -*- conding:utf-8 -*-
__author__ = 'mayi'

import csv

#读
with open("test.csv", "r", encoding = "utf-8") as f:
  reader = csv.DictReader(f)
  column = [row for row in reader]

print(column)

得到:

[{'No.': '1', 'Age': '18', 'Score': '99', 'Name': 'mayi'},
 {'No.': '2', 'Age': '21', 'Score': '89', 'Name': 'jack'},
 {'No.': '3', 'Age': '25', 'Score': '95', 'Name': 'tom'},
 {'No.': '4', 'Age': '19', 'Score': '80', 'Name': 'rain'}]

如果我们想用DictReader读取csv的某一列,就可以用列的标题查询:

#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

import csv

#读取Name列的内容
with open("test.csv", "r", encoding = "utf-8") as f:
  reader = csv.DictReader(f)
  column = [row['Name'] for row in reader]
print(column)

得到:

['mayi', 'jack', 'tom', 'rain']

2.写文件

读文件时,我们把csv文件读入列表中,写文件时会把列表中的元素写入到csv文件中。

#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

import csv

#写:追加
row = ['5', 'hanmeimei', '23', '81']
out = open("test.csv", "a", newline = "")
csv_writer = csv.writer(out, dialect = "excel")
csv_writer.writerow(row)

得到:

使用Python对Csv文件操作实例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中的一些类型转换函数小结
Feb 10 Python
浅谈Python NLP入门教程
Dec 25 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
python绘制无向图度分布曲线示例
Nov 22 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
用python对oracle进行简单性能测试
Dec 05 Python
python 读取excel文件生成sql文件实例详解
May 12 #Python
Python实现读取并保存文件的类
May 11 #Python
Python使用defaultdict读取文件各列的方法
May 11 #Python
python中nan与inf转为特定数字方法示例
May 11 #Python
Python和C/C++交互的几种方法总结
May 11 #Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 #Python
详解Python读取配置文件模块ConfigParser
May 11 #Python
You might like
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
php类的定义与继承用法实例
2015/07/07 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
Vuex提升学习篇
2018/01/11 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
Node.js JSON模块用法实例分析
2019/01/04 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
keras 多任务多loss实例
2020/06/22 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
运动会搞笑广播稿
2014/10/14 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL