CSV文件-数据分析

csv中最重要的两个函数分别是writerreader。考虑到很多人手头可能没有适合学习操作的csv文件,所以对csv模块的学习从writer开始。

writer

>>> import csv >>> data = [[i*j for j in range(5)] for i in range(5)] >>> f = open('test.csv','w')  >>> with f:  ... w = csv.writer(f) ... for row in data: ... w.writerow(row)  

从而我们新建了一个csv文件,其内容如下。

0,0,0,0,0 0,1,2,3,4 0,2,4,6,8 0,3,6,9,12 0,4,8,12,16 

delimiter参数用于更改列之间的分割符号,默认为,,若将w写为w=csv.writer(f,delimiter=' '),则得到的csv文件内容为

0 0 0 0 0 0 1 2 3 4 0 2 4 6 8 0 3 6 9 12 0 4 8 12 16 

reader

readerwriter的逆过程,可以按行读取csv中的数据

>>> f = open('test.csv','r')  >>> with f: ... r = csv.reader(f) ... for row in r: ... print(row) ... ['0', '0', '0', '0', '0'] [] ['0', '1', '2', '3', '4'] [] ['0', '2', '4', '6', '8'] [] ['0', '3', '6', '9', '12'] [] ['0', '4', '8', '12', '16'] 

writerreader中还有quoting参数,用以设置csv中识别引号的方式,其可选参数如下

dialect

csv是一种简单的文件格式,但仍然需要一些设置,比如分隔符以及处理引号的方式等。dialect便是对某些处理方式的集成,csv.reader中默认的dialectexcel,便相当于声明了使用,作为分隔符。

通过list_dialects可以获取当前已经定义的dialect

>>> csv.list_dialects() ['excel', 'excel-tab', 'unix'] 

这三种dialect分别对应三个已经封装好的类:excel, excel_tab, unix_dialect,其各项参数如下

其中,doublequote为True表示默认双引号,否则为单引号;escapechar为None表示禁用转义;lineterminator表示行结尾;quotechar表示用于包含特殊字符的字符;skipinitialspace为False则不忽略分隔符之后的空格。

通过register_dialectunregister_dialect可以新建或者取消dialect,例如

>>>csv.register_dialect('test',delimiter='-',quoting=csv.QUOTE_NONE) 

即创建了一个新的dialect,其分割符号为-,而引用模式采取QUOTE_NONE

DictWriter和DictReader

readerwriter主要用于按行读写数据,其操作的数据一般是list这种一维可迭代结构。相比之下,DictWriterDictReader可以更加方便地通过字典来操作数据。

>>> dct = [{str(j):i*j for j in range(5)} for i in range(5)] >>> for i in dct: ... print(i) ... {'0': 0, '1': 0, '2': 0, '3': 0, '4': 0} {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4} {'0': 0, '1': 2, '2': 4, '3': 6, '4': 8} {'0': 0, '1': 3, '2': 6, '3': 9, '4': 12} {'0': 0, '1': 4, '2': 8, '3': 12, '4': 16} 

则通过DictWriter可将dct写入csv中,以key为每一列的标题,以value为某行对应标题的值。

>>> with open('dict.csv', 'w', newline='') as csvfile: ... titles = list(dct[0].keys()) ... w = csv.DictWriter(csvfile,fieldnames=titles) ... for kw in dct: ... w.writerow(kw) 

dict.csv内容为

0,0,0,0,0 0,1,2,3,4 0,2,4,6,8 0,3,6,9,12 0,4,8,12,16 
本网页由快兔兔AI采集器生成,目的为演示采集效果,若侵权请及时联系删除。

原文链接:https://bbs.csdn.net/skill/python/python-3-224

更多内容