使用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中列表和元组的区别
Dec 18 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
Python自定义线程池实现方法分析
Feb 07 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
python list转矩阵的实例讲解
Aug 04 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Python如何输出警告信息
Jul 30 Python
Python jieba库分词模式实例用法
Jan 13 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
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
Java编程面试题
2016/04/04 面试题
房地产端午节活动方案
2014/08/24 职场文书
2014年档案室工作总结
2014/12/01 职场文书
工资证明格式模板
2015/06/12 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
校运会通讯稿
2015/07/18 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书