使用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基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
python任务调度实例分析
May 19 Python
打包发布Python模块的方法详解
Sep 18 Python
Php多进程实现代码
May 07 Python
Python实现全排列的打印
Aug 18 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
python软件都是免费的吗
Jun 18 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 Python
序列化Python对象的方法
Aug 01 Python
python使用多线程查询数据库的实现示例
Aug 17 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高级对象构建 工厂模式的使用
2012/02/05 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
Python实现的建造者模式示例
2018/08/06 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
python实时监控logstash日志代码
2020/04/27 Python
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
护理自荐信范文
2013/10/05 职场文书
校长岗位职责
2013/11/26 职场文书
生日宴会答谢词
2014/01/09 职场文书
动员大会主持词
2014/03/20 职场文书
遗产继承公证书
2014/04/09 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
门卫岗位职责
2015/02/09 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
离婚答辩状范文
2015/05/22 职场文书
签字仪式主持词
2015/07/03 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis