一.csv模块
参见:https://blog.youkuaiyun.com/dominic_z/article/details/81362610 \quad https://blog.youkuaiyun.com/tcy23456/article/details/85228189
1.CSV文件:
逗号分隔符文本格式,常用于数据交换/Excel文件和数据库数据的导入导出
·以纯文本存储数/文本,值没有类型,均为str
·文件的每一行代表一条数据,每条记录包含由','分隔的一/多个属性值
·默认读写用逗号做分隔符(delimiter),双引号作引用符(quotechar)
·不能指定字体颜色等样式
·不能指定单元格的宽高,不能合并单元格
·没有多个工作表
·不能嵌入图像图表
#说明:
·用writer写数据None被写成空字符串
·浮点型调用repr()转化成字符串
·非字符串型数据被str()成字符串存储
2.功能:
csv模块用于读取/写入csv格式的文件
3.使用:
#模块常量:
quoting=csv.QUOTE_MINIMAL=0
#writer对象只引用那些包含特殊字符
quoting=csv.QUOTE_ALL=1
#writer对象引用所有字段
#如字段分隔符,quotechar或任何字符lineterminator
quoting=csv.QUOTE_NONNUMERIC=2
#writer对象引用所有非数字字段
#指示读者将所有非引用字段转换为float类型
quoting=csv.QUOTE_NONE=3,escapechar='$'
#writer对象不引用字段(无引用符)
#如未设置escapechar错误抛出;指示reader不对引号字符执行特殊处理
#函数:
lines=csv.reader(csvfile,dialect ='excel',**fmtparams)
#返回一个读取器对象,它将迭代给定csv文件中的行
#参数说明:
#csvfile:要读取的文件对象;可选
#必须是支持迭代(Iterator)的对象
#可以是file/list;如果是file,打开时需要加"b"标志参数
#dialect:规定以什么规范操作csv文件
#可选excel,excel-tab,unix;默认为excel
#fmtparams:格式化参数(覆盖之前dialect对象指定的编码风格);可选
# delimiter='':指明分割符;多数为','
# quotechar='':指明引用符(被引用符包裹的内容为一个整体,不分割);多数为' "" '
# quoting='':指明引用的模式;csv.QUOTE_系列均可传入
# doublequote='':碰到了在引用符之中的引用符,会吧连续的两个引用符看做一个双引用符
# escapechar='':作用同上,但可指定非引用符的符号起到该作用
fileObj = open('E:/inputFile.csv','r')
csvReader=csv.reader(fileObj)
#方法:
csv.reader().next()
#属性:
csv.reader().dialect
csv.reader().line_num
csv.writer(f,dialect ='excel',**fmtparams )
#返回一个编写器对象,负责将用户的数据转换为给定类文件对象上的分隔字符串
#参数说明:同上
#属性:
csv.writer().dialect
csv.writer().writeheader
csv.writer().writerow:一行一行写入
csv.writer().writerows:一次写入多行
csv.DictReader()
#字典读
#方法:
csv.DictReader().__next__()# 称之为next(reader)
#属性:
csvreader.dialect:解析器使用的方言的只读描述
csvreader.line_num:从源迭代器读取的行数;这与返回的记录数不同,因为记录可以跨越多行
csvreader.fieldnames:从文件中读取第一条记录时初始化此属性
csv.DictWriter()
#方法:
csvwriter.writerow(row):将row写入writer的文件对象,根据当前方言进行格式化;支持迭代
csvwriter.writerows(rows):将行中的所有元素写入编写器的文件对象,并根据当前方言进行格式化;支持迭代
DictWriter.writeheader():公共方法;用字段名称写一行
#属性:
csvwriter.dialect#使用的方言只读描述
register_dialect(name,dialect,**fmtparams)
#用来自定义dialect的
#参数说明:
#name:自定义的dialect的名字;比如默认的是'excel',可以定义成'mydialect'
#其他同前
unregister_dialect(name)
#用于注销自定义的dialect