python基础 ---csv模块

文章目录

csv模块

csv文件是被行分隔符和列分隔符,分成行和列的文本文件。csv文件是纯文本文件,不指定字符编码

行分隔符:\n,最后一行可以没有换行符
列分隔符:逗号或者制表符,每一行为一条记录record
  • 每一行的各个字段可以使用双引号分别包围,也可以不使用双引号包围。
  • 如果字段内容中包含了双引号、逗号或者换行符的话,那么字段就必须使用双引号包围,内容中的双引号可以使用""的形式来转义

默认使用excel方言

  • delimiter 列分隔符
  • lineterminator 行分隔符\r\n
  • quotechar 字段的引用符号,缺省为"双引号
  • 双引号的处理
    • doublequote,默认为True。如果数据中有双引号,而quotechar也是双引号的话,True表示使用两个双引号来转义此双引号,False表示使用转义字符来转义此双引号
    • escapechar一个转义字符,默认为None
writer = csv.writer(f, doublequote=False, escapechar='@')#遇到双引号,就必须提供转义字符
  • quoting指定双引号的规则
    • QUOTE_ALL所有字段
    • QUOTE_MINIMAL特殊字符字段,excel使用此规则
    • QUOTE_NONNUMERIC非数字字段
    • QUOTE_NONE都不使用双引号
writer(csvfile, dialect='excel', **fmtparams)#返回DictWriter的实例
reader(csvfile, dialect='excel', **fmtparams)#返回reader对象,是一个行迭代器

主要方法

writerow
writerows
writerow(iterable)  #writeow()方法后跟可迭代对象
import csv
rows = [
    ('id', 'name', 'age', 'comment'),
    [1, 'tom', 20, 'tom'],   
    (2, 'jerry', 18, 'jerry'),
    (3, 'justin', 22, 'just\t"in'),
    "abcdefgh",
    ((1,), 2, [3])
]  #先定义一个可迭代对象,本文定义的是一个字典

#newline=''表示写入时,不将\n转换为\r\n,那么输出就是\r\n,否则将会是\r\r\n
with open('./test.csv', 'w+', encoding='utf-8', newline='') as f:
	writer = csv.writer(f)
	writer.writerow(row[0]) #取列表的第一个元素,即('id', 'name', 'age', 'comment')
	writer.writerows(row[1:]) #从列表的第二个元素开始取

上面代码运行后,数据结果会输出到test.csv,之后即可使用excel打开查看
csv模块的reader()方法

import csv
with open('test.csv', encoding='utf-8', newline='') as f:
	x = csv.reader(f)  #读取文件内容,x为惰性对象
	for line in x:
		print(line)
换行的问题
writer()方法:
如果newline设置为None,那么输出的内容会以\n作为换行符;
如果newline是''或者是\n就不做替换,在记录或字段结束后加上换行符;
如果newline是\r\n,就在字符后面加上\n来作为换行符
reader方法:
如果newline为None,那么遇到所有格式的换行符都会进行相应操作,比如,\r,\n\r,\n等,先转换成\n然后再读取;
如果newline为'',遇到所有格式的换行符也会进行换行,不过不会将这些换行符转换成\n之后再读取;
如果newline是\r\n,会在\r\n后面再添加一个\n然后读取,其他换行字符不作处理
结论:
writer()方法和reader()方法最好使用相同的newline值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值