本教程使用的课本是《Python编程:从入门到实践》,作者:[美]EricMatthes
CSV文件是一种特殊的文本文件,文件中的数据以逗号作为分隔符,很适合进行数据的解析,应用在很多场景,本文以如下CSV文件为例,说明如何利用Python进行数据的解析。
可以利用excel的“另存为”功能,在将“保存数据类型”选择为CSV,可以很方便的生成CSV文件。
最终生成的CSV文件如下:
姓名,年龄,性别,分数张三,34,男,80李四,24,男,85王五,23,女,87赵六,19,女,91
包含在Python标准库中自带CSV模块,我们只需要import进来就能使用。比如我们需要将上面的CSV文件都打印出来,可以用如下代码:
importcsvfilename=abc.csvwithopen(filename)asf:reader=csv.reader(f)forrowinreader:print(row)
可以看到最终的输出结果是5个列表,包含列表的头,下面解释代码:
1、importcsv用来导入csv模块
2、withas语句的作用是打开csv文件
3、用csv.read()读取文件内容
4、用for循环打印每一行
下面演示一下如何求取分数的平均值,我们的思路是这样的,将文件的指针指到第二行,因为第一行的抬头没有数据,然后将CSV文件中的分数一个一个取出来,放到列表中,然后再使用平均值函数求出平均值。
importcsvdefaverage(list):sum=0fornuminlist:sum+=numreturnsum/len(list)filename=abc.csvwithopen(filename)asf:reader=csv.reader(f)header_row=next(reader)list=[]forrowinreader:list.append(int(row[3]))print(average(list))
代码说明:
1、average是求平均值的函数,入参是一个列表,通过遍历列表的元素求和,然后除以元素的个数求出平均值。
2、header_row=next(reader)是返回reader对象的下一行,因为我们刚打开文件,所以返回的是第一行的标题行。调用了next()函数之后,reader的指针会指到第二行,下次调用reader会从第二行开始读取。
3、list=[]创建一个空的链表,将分数放在这个链表中,然后传递给求平均值的函数。
4、我们用for循环遍历csv文件剩下的行,因为调用过一次next(),所以现在从第二行开始读数据。
5、row变量是一个列表,所以我们使用row[]这种方式来取列表元素,row[3]就是第四个元素。
6、最后调用average(list)函数,并将结果打印出来。
Python有好几种方式能操作CSV文件,除了我们用的这种,还可以使用Pandas、使用Tensorflow等来操作CSV文件,有兴趣的读者可以自己百度一下。#Python入门教程#
长按文末点赞送三连,支持本文作者多写点~