今天先简单的使用一些csv文件处理的一些常用方法,后面使用到numpy、pandas等模块时再补充。
csv文件简介
CSV文件格式的通用标准并不存在,可以参看RFC 4180
逗号分隔值(Comma-Separated Values,CSV,有时也成为了字符分隔,因为分隔字符也可以不是逗号)。
其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
基本规则
- CSV是一种被分隔的数据格式,它有被逗号字符分隔的字段/列和以换行结束的记录/行。
- CSV文件不要求特定的字符编码、字节序或行结束符格式(某些软件不支持所有行结束变体)。
- 一条记录结束于行结束符。然而,行结束符可能被作为数据嵌入到字段中,所以软件必须识别被包裹的行结束符(见下述),以便从可能的多行中正确组装一条完整的记录。
- 所有记录应当有相同数目、相同顺序的字段。
- 字段中的数据被翻译为一系列字符,而不是一系列比特或字节(见RFC 2046,section 4.1)。例如,数值量65535可以被表现为5个ASCII字符“65535”(或其它形式如“0xFFFF”、“000065535.000E+00”等等);但不会被作为单个二进制整数的2字节序列(而非两个字符)来处理。如果不遵循这个“纯文本”的惯例,那么该CSV文件就不能包含足够的信息来正确地翻译它,该CSV文件将不大可能在不同的计算机架构间正确传递,并且将不能与text/csv MIME类型保持一致。
- 相邻字段必须被单个逗号分隔开。然而,“CSV”格式在分隔字符的选择上变化很大。特别是在某些区域设置中逗号被用作小数点,则会使用分号、制表符或其它字符来代替。
更多详细信息可以参考wikipedia
简单用法示例
手动生成csv文件
from pathlib import Path
p = Path() / "test.csv"
csv_body = """\
id,name,age
1,小明,18
2,小红,19
3,小黄,17
"""
p.write_text(csv_body)
写入效果如下:
csv模块
csv模块实现了以CSV格式读取和写入表格数据的类。
csv模块可以使用reader或者writer对象来读写序列,也可以使用DictReader和DictWriter类以字典的形式来读写数据。
csv.reader
csv.reader(csvfile,dialect=“excel”,**fmtparams)
返回reader对象,是一个行迭代器
默认使用excel方言,参考