700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python的csv标准库 Python标准库: csv模块——CSV文件的读写

python的csv标准库 Python标准库: csv模块——CSV文件的读写

时间:2019-10-04 20:34:49

相关推荐

python的csv标准库 Python标准库: csv模块——CSV文件的读写

CSV简介

CSV(Comma Separated Values,逗号分隔值)也称字符分隔值,因为分隔符可以不是逗号,是一种常用的文本格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到CSV这种格式的文件,它的使用是比较广泛的(Kaggle上一些题目提供的数据就是csv格式),csv虽然使用广泛,但却没有通用的标准,所以在处理csv格式时常常会碰到麻烦,幸好Python内置了csv模块。

该模块能够允许用户使用CSV格式将数据以Excel的格式读写。同时可以使其他应用理解CSV格式,或者定义自己的专用CSV格式。

csv模块使用reader和writer对象读写序列。用户还可以使用DictReader和DictWriter读写字典中的数据。

模块内容

csv.reader(csvfile, dialect=‘excel’, **fmtparams)

返回一个reader对象,该对象在给定的csvfile中以行为单位进行迭代。

csvfile是一个支持迭代运算的对象,它需要有一个__next__()方法在每一次迭代的时候返回一个字符串——文件对象和字符串列表对象都符合这个要求。如果csvfile是一个文件对象,那么在open这个文件的时候需要加入newline=''的参数。

dialect参数是可选的,用于定义一组对应方言的参数。他可以是Dialect类的子类或者实例或者是list_dialects()返回的任何一个字符串。

还有可选的参数fmtparams用于覆盖当前设置的方言中的一些参数,具体需要看方言和格式参数的设置部分。

从csv文件读取的每行都作为字符串列表返回,通过迭代csv.reader函数返回的是一个可迭代的对象,该对象每一次迭代会返回一个字符串列表。除非指定了QUOTE_NONNUMERIC格式选项,否则不执行自动数据类型转换(在这种情况下,未引用的字段将转换为浮点数)。

一个例子:

>>> import csv

>>> with open('eggs.csv', newline='') as csvfile:

... spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')

... for row in spamreader:

... print(', '.join(row))

Spam, Spam, Spam, Spam, Spam, Baked Beans

Spam, Lovely Spam, Wonderful Spam

csv.writer(csvfile, dialect=‘excel’, **fmtparams)

返回一个writer对象,负责将用户的数据转换为给定的类文件对象的分隔字符串。

csvfile可以是任何带有write()方法的对象。如果csvfile是一个文件对象,那么在open这个文件的时候需要加入newline=''的参数。

dialect参数是可选的,用于定义一组对应方言的参数。他可以是Dialect类的子类或者实例或者是list_dialects()返回的任何一个字符串。

还有可选的参数fmtparams用于覆盖当前设置的方言中的一些参数,具体需要看方言和格式参数的设置部分。

为了尽可能容易地与实现DB API的模块进行接口,该值None将被写为空字符串。虽然这不是一个可逆的转换,它可以更容易地将SQL NULL数据值转储到CSV文件。而无需预处理从cursor.fetch*调用返回的数据。所有其他非字符串数据str()在写入之前都会被字符串化。

每一次写入一行可以使用csv.writer返回的对象的writerow方法写入,传入的参数需要是一个字符串列表。

一个例子:

import csv

with open('eggs.csv', 'w', newline='') as csvfile:

spamwriter = csv.writer(csvfile, delimiter=' ',

quotechar='|', quoting=csv.QUOTE_MINIMAL)

spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])

spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

csv.register_dialect(name[, dialect[, **fmtparams]])

在name和dialect之间建立关联。

其中方言可以通过Dialect的子类或者通过传递fmtparams关键字参数或者两者,通过覆盖方言参数的关键字参数来指定方言。

csv.unregister_dialect(name)

解除name与方言之间的关联。

如果name之前并没有注册过,则会发生一个Error。

csv.get_dialect(name)

返回name关联的方言。

该方法返回的是一个不可变的Dialect。

如果name之前并没有注册过,则会发生一个Error。

csv.list_dialects()

返回所有注册了的方言的名称。

csv.field_size_limit([new_limit])

返回解析器允许的当前最大字段大小。

如果给出new_limit,这将成为新的限制。

未完待续

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。