使用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学习笔记之常用函数及说明
May 23 Python
跟老齐学Python之dict()的操作方法
Sep 24 Python
python使用Tesseract库识别验证
Mar 21 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
Django+Xadmin构建项目的方法步骤
Mar 06 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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类
2006/10/09 PHP
php session应用实例 登录验证
2009/03/16 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
javascript运动详解
2015/07/06 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
django 将model转换为字典的方法示例
2018/10/16 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Python实现京东秒杀功能代码
2019/05/16 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
荣耀商城:HIHONOR
2020/11/03 全球购物
中学门卫岗位职责
2013/12/26 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
python实现剪贴板的操作
2021/07/01 Python
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA