使用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 Matplotlib库入门指南
May 18 Python
全面了解python字符串和字典
Jul 07 Python
Python网络爬虫项目:内容提取器的定义
Oct 25 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
python实现内存监控系统
Mar 07 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
python实现静态web服务器
Sep 03 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 Python
深入浅析Django MTV模式
Sep 04 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基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
老生常谈js数据类型
2017/08/03 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
JSF的标签库有哪些
2012/04/27 面试题
企业后勤岗位职责
2014/02/28 职场文书
中层干部培训方案
2014/06/16 职场文书
学校创先争优活动总结
2014/08/28 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle