CSV 文件
是纯文本文件
用途:交换文件、跨平台使用
逗号分隔值:Comma-Separated Values
CSV是一个呗行分隔符,列分隔符划分成行和列的文本文件
CSV不指定字符编码
行分隔符是\r\n,最后一行可以没有换行符
列分隔符常为逗号或者制表符
每一行称为一条记录record
字段(filed)可以使用双引号括起来,也可以不使用。如果字段中出现了双引号、逗号、换行符 必须使用双引号括起来。如果字段的值是双引号,使用两个双引号表示一个转义。
手动生成CSV文件
from pathlib import Path
p = Path('o:/tmp/mycsv/test.csv')
parent = p.parent
if not parent.exists():
parent.mkdir(parents=True)
csv_body = '''\
id,name,age
1,zs,12
2,sa,23
3,we,14
'''
p.write_text(csv_body)
csv模块
reader (cscfile ,dialect='excel',**fmtparams)
返回reader对象,是一个行迭代器
默认使用Excel方言,如下:
-
delimiter 列分隔符,逗号
-
lineterminator 行分隔符 \r\n
-
quotechar 字段的引用符号,缺省为
"
双引号 -
双引号的处理
- doublequote 双引号的处理,默认为True。如果碰到数据中有双引号,而quotechar也是双引号,True则使用2个双引号表示,False表示使用转义字符将作为双引号的前缀
- escapechar 一个转义字符,默认为None
- writer = csv.writer(f,doublequote=False,escapechar=’@’)遇到双引号,则必须提供转义字符
-
qouting 指定双引号的规则
- QOUTE_ALL所有字段
- QOUTE_MINMAL特殊字符字段,Excel方言使用该规则
- QOUTE_NONNUMERIC 非数字字段
- QOUTE_NONE都不使用引号
writer(csvfile,dialect='excel',**fmtparams)
返回DictWriter的实例
主要方法有writerow、writerrows
writerrow(iterable)
import csv
from pathlib import Path
p = Path('o:/tmp/mycsv/test.csv')
with open(str(p)) as f:
reader = csv.reader(f)
print(next(reader))
print(next(reader))
for line in reader:
print(line)
rows = [
[4,'tom',