CSV文件简介
CSV(Comma-Separated Values),逗号分隔值 CSV是一个被行分隔符、列分隔符划分成行和列的文本文件.没有指定字符编码. 详情参看 RFC 4180 :https://www.ietf.org/html/rfc4180 行分隔符为\r\n,最后一行可以没有换行符 列分隔符常为逗号或制表符 每一行数据称为一条记录(record) 一行中被列分隔符分成的一个个独立数据,称为一个字段 字段可以使用双引号括起来,也可以不使用.(有些程序会自动帮你替换) 如果字段中出现了双引号、逗号、换行符必须使用双引号括起来. 如果字段的值是双引号,使用两个双引号表示一个转义.("""") 表头可选,和字段列对齐即可.
手动生成CSV文件
from pathlib import Path p = Path('G:/csv/a.csv') # CSV文件路径 parent = p.parent if not parent.exists(): # 判断目录是否存在 parent.mkdir(parents=True) # "\"反斜杠此处表示折行,这样保证第一行不为空行 csv_body = """\ id,name,age,comment 1,tom,18,"i'm 18" 2,jerry,"this is a ""test"" string." 3,sadan,"中国 国庆 " """ p.write_text(csv_body)
csv模块
两个函数:
reader(fileobj,dialect='excel',**fmtparams) 返回DictReader的实例,是个行迭代器 delimiter 列分隔符,缺省值为逗号 lineterminator 行分隔符,缺省值为\r\n quotechar 字段的引用符号,缺省为'"',双引号 双引号的处理: doublequote 双引号的处理,默认为True. 如果"和quotechar为同一个,True则使用2个双引号表示 False表示使用转义字符作为双引号的前缀.例:"\"" escapechar 设定转义字符,默认为None.默认转义符为"\" quoting 指定双引号的规则 QUOTE_ALL 所有字段都有加引号 QUOTE_MINIMAL 特殊字符字段才加引号 QUOTE_NONNUMERIC 非数字字段需要加引号 QUOTE_NONE 都不使用引号
writer(csvfileobj, dialect='excel', **fmtparams) 返回DictWriter的实例 主要方法有: writerow(iterable) 将一个可迭代对象中所有元素写在一行 writerows(iterable) 将一个可迭代对象的多个元素写入多行 示例: from pathlib import Path import csv p = Path('G:/csv/b.csv') row = [1,'one',2,'two'] row = ['1','one','2','two'] rows = [ (3,'tom',4,'jerry'), (5,'ls\t','6','ss') ] with open(str(p),'w') as f: writer = csv.writer(f) print(type(writer)) # writer.writerow(rows) # 将多个元组写入一行 # writer.writerows(row) # 将可迭代对象元素写成多行 writer.writerow(row) writer.writerows(rows) with open(str(p),'r') as f: reader = csv.reader(f) print(type(reader)) for line in reader: print(line)