Python3 用CSV模块读写CSV文件
前言: CSV简介
CSV (Comma Separated Values)
CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 “ , ” 分隔的一列列的数据构成的。CSV文档是一种编辑方便,可视化效果极佳的数据存储方式。而Python中有着非常强大的库可以处理这种文档,所以,如果你经常用Python处理数据的话,CSV文档当然是一种简单快捷的轻量级选择。下面我将以一个数据处理的例子入手,展现CSV文档的创建和编辑,以及Python是如何对CSV文档读写的。 ****** ### 一、CSV文档的创建和编辑 1. 良好的Excel交互
- Excel创建CSV 说到CSV文档,大家可能不熟悉,不过Excel想必没有人不知道,我们经常使用Excel负责数据的存储,编辑以及轻量级的计算。而CSV文档最大的优点就是能和Excel进行方便的交互,我们可以很方便地通过Excel创建、查看以及编辑CSV文档。 在Excel中编辑完数据后,保存文件的时候,会出现一种文件格式,就是 .csv ,如图:
然后现在点击保存,会发现“文件格式”的选项中有“逗号分隔值(.csv)”:
我们选择文件格式为.csv存储,这样,就通过Excel成功创建了一个CSV文档。
- 文本访问和编辑CSV 如果现在我们将刚才创建好的CSV文档直接双击点开,他会默认由Excel打开,依旧和上边相同,用Excel可以很方便的编辑,修改数据,这里不再赘述。我要说的是CSV文档也可以以文本的形式展现出来,比如,我现在把刚才保存的CSV文档用Sublime打开,展示如下:
这我们就非常直观地明白为什么叫“逗号分隔值”了,数据之间是由 “,” 分隔开的,且格式非常规范,没有多余的空格,空行等。 ****** ### 二、Python读写CSV文档 #### 1、CSV模块中的函数 1.1 读取CSV文件: + reader(csvfile, dialect=‘excel’, **fmtparams) >参数说明: >csvfile,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对象,打开时需要加”b”标志参数。
dialect,编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册。
>fmtparam,格式化参数,用来覆盖之前dialect对象指定的编码风格。
1 | import csv |
上面程序的效果是将csv文件中的文本按行打印,每一行的元素都是以逗号分隔符’,‘分隔得来 >例如程序输出结果: >[’1’, ’2’] [’3’, ’a’] [’4’, ’b’] ****** 1.2 存为CSV文件: + writer(csvfile, dialect=’excel’, **fmtparams)
1 | with open('xxx.csv','w') as myFile: |
’w’表示写模式。
首先open()函数打开当前路径下的名字为’xxx.csv’的文件,如果不存在这个文件,则创建它,返回myFile文件对象。如果文件’xxx.csv’事先存在,调用writer函数会先清空原文件中的文本,再执行writerow/writerows方法。
csv.writer(myFile)返回writer对象myWriter。
writerow()方法是一行一行写入,writerows方法是一次写入多行。
1.3 以字典的形式读出: + DictReader()
假设CSV文件的内容如下图所示,DictReader会将第一行的内容(类标题)作为key值,第二行开始才是数据内容。即图中的CSV文件有2列7行数据,第一列的key值为id,第二列的key值为class:
1 | import csv |
打印结果为: 0 5 1 4 2 13 … 6 15
1.4 以字典的形式写入: + DictWriter()
DictReader可以用来把CSV文件以字典的形式读出,当然还有相对的DictWriter以字典的形式写入内容,比如:
1 | with open('name.csv','w') as fp: |