当前课程知识点:计算思维与人工智能基础 > 第三部分:python基础 > 第七章:文件操作 > 7.3CSV模块的应用
下面我们给大家介绍一下CSV文件的操作
什么是CSV文件呢
他的英文就是Comma-Separated Values
中文就叫做逗号分隔值或者字符分割值
其文件以纯文本的形式存储表格数据
那么该文件是一个字符序列
记录间以某种换行符分隔
这个换行符我们可以在写代码的时候自己定义
每条记录都由字段组成
所有的记录都有完全相同的字段序列
相当于一个结构化表的纯文本形式
用文本文件Excel或者类似于文本文件的这个应用程序
都可以打开这个CSV的文件
那我们看右边这段代码
我们之前打开文件的形式是文本文件
如果这个后缀是.CSV文件
跟打开文本文件的格式是完全一样的
open打开
f.读它
print把他输出
那么输出的格式大家可以看的到
上面就像一个记录的字段名称一样
No,Name,Age,Score
然后下面就是对应的一条一条的记录
每个记录的结构都是一样的
那么它的写的方式呢
我们前面讲过
write和writelines那么也可以以读写的方式打开
我们可以把一个列表写入到我们这个指定的文件里面
就是和这是我们前面的用过的
如果要更好的去方便的去操作CSV文件
我们可以引入一个CSV的模块
我们通过import CSV来导入这个模块
那么他这个模块是专门用于读取和写入CSV文件的内容
那对于文件的读取呢
常用的函数就是reader这个函数和DictReader这两个函数
我们来看这个reader是接受一个可迭代的对象
那么就是一个迭代器
这个迭代器是以行为单位的
也是看这段代码
with open 打开一个CSV文件是已读的方式
read这样的方式打开的
那么这个编码方式是utf-8
通过CSV.reader这个函数
我们把这个f读到这个read1里面
那么这个我们read1就是一个迭代器
就可以通过for...in的方式
从我们reader里面取一行一行的读出
那么读出以后呢
我们这个rows其实是一个列表
通过输出这个列表我们可以看的到他是
这是一行就是一个列表
一行是一个列表
那么这是由几个列表元素组成的
另外的话有DictReader
那么他是接受也是接受一个可迭代的对象
返回一个生成器
但返回的每一个单元格都放在一个字典的值内
那么字典的键则是这个单元格的这个列头
也一样看一下我们同样通过with open打开一个文件
我们通过CSV.DictReader的把他读进来
那么读进来那么read1也是一个什么呀
迭代器
我们通过for...in的方式把它读出
读出可以放到什么
这个column
那么这个column也是一个列表
但这个列表的格式跟上面那个
reader读出来的这个列表的格式是不一样的
我们可以看的到这个列表里面
那么列表里面可以看的到他也是有一个什么啊
一个一个元素组成
那么这个元素呢
他有一个OrderedDict
OrderedDict后面呢
可以跟的什么呀
那么这是一个元素
元素里面的又是列表
那么列表里面又以每一个元素呢
其实这个就相当于我们是一个前面的一个行
那么一个行里面呢
它是按照我们的这个表头他的键值
键值这样方式存储的
只不过这个是用逗号作为一个元素
逗号作为一个元素
这是一个列表里面的一个元素
那么这个里面的元素里面的又是什么呀
那么就相当于他是一个二维的列表
列表下面再有元素
这样组成
那么下面 又标注一个OrderedDict
然后后面是一个列的名称
是这样子的一个输出
只是输出的格式不同而已
CSV文件的写入
那么在CSV这个模块里面提供了write和DictWriter这两个方法
来用于写入文件以及或者是写入字典列表数据到文件里面
那么在这个写入模块下面呢
会有writerow将数据写入对应的行
和writeheader写入表头
这时在他们下面又提供了不同的方法
我们来看右边这个
打开这个CSV文件
我们以追加的方式
那画行是通过空格
通过CSV.writer我们写入文件也就打开一个文件句柄
那么这个文件我们可以定义成excel的文件
上面呢前面定义了个datas
这是一个列表
我们可以看到这是一个二维列了
那么通过for..in的方式将这个二位列表按每行
一行也就说一次一个元素
这样进行迭代写入
这是一个通过writer和writerow写入的一个例子
下面来看通过的DictWriter是如何写入
那么一样的话我们这个地方呢
还是一个with open打开我们的一个CSV文件
以追加的方式啊
那么通过我们这次写入方式
CSV.DictWriter
f呢就写不到我们刚才这个文件里
后面跟了一个什么呀
headers
headers是一个什么呀
是一个列表
通过这个列表是一个表头
那么headers可以看得到这个是
name,age给了这样的一个列表
在这个下面的话
就是可以通过writer.writeheader这样的方式呢
可以写入他的表头
写入表头
下面呢再可以通过和刚才一样
我们通过datas也是给了一个列表
这个列表跟刚才那个列表不一样
就是他们每个列表里面的元素是一个什么呀
我们可以看他是一个字典的形式
键值对
键值对的这样的一个形式
通过writerow那也是可以进行写进去的
那么来看在jupyter下面写进去是两个文件
它的效果是什么样子的呢
好我们来在jupyter下看一下这些代码读写
在CSV下面是怎样运行的
首先呢
我们要用CSV文件的操作
我们要用这个import csv这样导入
导入这个模块可以用
前面已经用过
所以导入
导入正常以后呢
我们可以看
这是我们要读我们一个文件
读一个文件通过reader读出来
我们看一下我们这个example9.csv
他的这个文件里面的内容是什么
运行一下你可以看到
它是这样子的
相当于我们这是
第一个元素第二个元素第三元素这个列表
那我们一般通常这是表头
指示元素的
这是列表里面的值
好我们来看看我们如果按照write的方式写入呢
你这个因为他这个列表的格式是这样
所以我们也给了个datas跟他那个是一样的这样的列表的格式
然后我们通过打开文件以后我们按照我们的什么呀
csv.writer这个方式写入
这个是我们看打开方式是追加的方式
所以他在刚才那个表上再把这两个元素追加一下
那么通过我们这个write.writerow按照每行把它写入
我们运行一下
我们这是已经写入了
那么就写入追加上
我们再看一下还是同一个文件
再在这看一下
我看追加进去
这是有三个元素
我们再追加显示一看
我们这是原来的
又追加了两个
就是把这两个元素追加上
我们可以看的到
另外我们看一下这个
dictwriter他使用
这是我们刚才这段代码我们是以写的方式
那么以写的方式把它打开
那么画行也是用空格
DictReader(f,headers)给了一个列表
那么通过writeheader把这个列表写进去
那么也是通过这样按行写进去
那么执行一下
那我就写进去
写进去以后呢
我们可以看的到这个在读的时候呢
我们可以看到这是同样的是一个文件
这是一个文件
所以我们把它写进来的时候
是我们可以看到name,age写了
name第一个是Bob
这是三个元素写进来
我们可以这是打开我们的文件
那我们通过他的方式前面讲过CSV.Dictwriter
这样的方式去读我们的这个列表的数据
我们这个reader通过什么呀
for...in的方式
这个里面的我们可以按照什么呀
我把这个键作为我们的什么呀
这个元素的下标来进行输出
print(name,age)
输出可以看到
就是我们这样的一个结果
如果我们把这个改成一个追加的方式
以追加的方式我们在再写一次
我们在这个地方运行的时候
我们可以看到
他的这个结果啊就又写
又写上
这就说明我们写入是成功的
这个就是我们在CSV这个模块下
对CSV文件的读写
好的
我们今天就给大家介绍到这儿
-章测试
-章测试
-第一章:python简介
--章测试
-第二章:编码规范
--2.2常量和变量
--章测试
-第三章:数据类型
--章测试
-第四章:基本运算
--4.2比较运算符
--4.3逻辑运算符
--4.4位运算符
--章测试
-第五章:程序控制结构
--5.1顺序结构
--5.2条件结构
--5.3循环结构
--5.4跳转结构
--5.5异常处理
--章测试
-第六章:函数、模块与面向对象
--6.2面向对象
--6.4模块与包
--章测试
-第七章:文件操作
--7.2文件的写入
--章测试
-第八章:python生态库
--章测试
-第九章:TensorFlow基础
--章测试
-第十章:实例分析与实践
--章测试
-第十一章:人工智能在自然语言中的应用
--章测试