版权声明:qq:1263351411 https://blog.csdn.net/u013008795/article/details/89789124
csv配置文件
参看RFC4180 https://www.ietf.org/rfc/rfc4180.txt
- CSV是一个被行分割符、列分隔符划分成行和列的文本文件
- CSV不指定字符编码
行分割符:\r\n,最后一行可以没有换行符
列分隔符: 为逗号遇制表符。 - 每一行称为一条记录record
字段:可以使用双引号括起来,也可以不使用,如果字段中出现了双引号、逗号、换行符必须使用双引号括起来。如果字段的值为双引号,使用两个双引号表示一个转义。
表头:可以有也可以没有。和字段列对齐就行。 - 一般后缀为.csv的文件称为csv配置文件
简单的csv文件排版如下
"id","name","age"
"1","张三","12"
"2","xdd","18"
"3","aiqiyi","200","看电影"
- 手动生成csv文件
from pathlib import Path
p = Path("a/b/one.csv")
csv_body = """\
di,name,age,comment
"1","张三","12"
"2","xdd","18"
"3","aiqiyi","200","看电影
www.aiqiyi.com
"
"""
parent = p.parent
if not parent.exists():
parent.mkdir(parents=True)
p.write_text(csv_body)
csv模块
导入模块方法:
import csv
常用方法
-
reader(csvfile,dialect=‘excel’,**fmtparams)->_csv.reader对象。 #读取csv文件
- csvfile:csv文件描述符对象。
- dialect:默认为excel方言
- delimiter:列分隔符,逗号
- lineterminator:行分隔符\r\n
- quotechar:字段的引用符号,缺省为:"双引号
- 双引号的处理
- doublequote 双引号的处理,默认为True。如果碰到数据中有双引号,而quotechar也是双引号,True则使用2个双引号表示,False表示使用转义字符作为双引号的前缀
- escapechar 一个转义字符,默认为None
- writer = csv.writer(f,doublequote=False,escapechar=’@’)遇到双引号,则必须提供转义字符
- quoting 指定双引号的规则
- QUOTE_ALL 所有字段
- QUOTE_MINIMAL特殊字符字段,Excel方言使用该规则
- QUOTE_NONNUMERIC非数字字段
- QUOTE_NONE都不使用引号。
简单示例:
import csv with open("a/b/one.csv") as p: for i in csv.reader(p): print(i)
输出结果为:
-
writer(csvfile,dialect=‘excel’,**fmtparams)->DictWrite的实例。 #写入csv文件
- Dictwrite对象主要方法:
- writerow(row) 将rwo,写入scv文件,单行写入
- row 一个可迭代对象,可迭代对象的每一个元素,将作为csv行的每一个元素。
- 注意:windows下会多出一个\r,解决办法open(‘text.csv’,‘w’,newline=’’)
- row 一个可迭代对象,可迭代对象的每一个元素,将作为csv行的每一个元素。
- writerows(rows) 将rows,写入csv文件,多行写入
- writerow(row) 将rwo,写入scv文件,单行写入
- 简单示例:
import csv rows = [ ["name","age","like"], ["张三","18","打篮球"], ("李四","19","游泳","吃饭"), "abcde", ((1,),(2,)) ] row = rows[0] with open("a/b/two.csv","w",newline="") as p: cv = csv.writer(p) cv.writerow(row) #单行写入 cv.writerows(rows[1:]) #多行写入 with open("a/b/two.csv") as p: for i in csv.reader(p): print(i)
输出结果为:
- Dictwrite对象主要方法: