使用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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
python 标准差计算的实现(std)
Jul 29 Python
python实现简易淘宝购物
Nov 22 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
python实现暗通道去雾算法的示例
Sep 27 Python
python 提高开发效率的5个小技巧
Oct 19 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
手把手教你配置JupyterLab 环境的实现
Feb 02 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数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PDO::exec讲解
2019/01/28 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
对于Python中RawString的理解介绍
2016/07/07 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
医师定期考核实施方案
2014/05/07 职场文书
关爱老人标语
2014/06/21 职场文书
教师演讲稿开场白
2014/08/25 职场文书
2015年大学生工作总结
2015/04/21 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript