CSV 格式介绍
CSV(Comma-separated values)即逗号分隔值,是一种使用逗号分隔值,使用换行符分隔记录的文本文件格式。其中文件的每一行都表示一条数据记录,每条记录有相同数量的字段组成,这些字段使用逗号分隔。
csv 文件特点
CSV 是最常见的数据交换格式。作为纯文本他具有良好的可读性以及兼容性,并且配合压缩工具能够以很小的存储空间保存。但是他的数据类型表现很弱仅能表示字符串和数字,并且无法区分空值和空字符串。还有就是分隔符和换行符本身也可能是字符串的一部分,他们需要被特殊处理,否则会导致格式错误。
规范
CSV 包含众多的方言,并没有一个非常统一的规范。目前使用最为广泛的是 RFC 4180 规范。其中包括:
- 以(CR/LF)字符结束的 DOS 风格的行(最后一行可选)
- 一条可选的表头记录(没有可靠的方式来检测它是否存在,所以导入时必须谨慎)
- 每条记录应当包含同样数量的逗号分隔字段
- 任何字段都可以被包裹(用双引号)
- 包含换行符、双引号、/和逗号的字段应当被包裹(否则文件很可能不能被正确处理)
- 如果使用双引号将字段包裹起来,字段中的双引号字符必须由两个双引号表示
规范示例
Bash
Year,Make,Model,Description,Price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
- 第一行是标题行
- 第二行 Description 是字符串其中包含了逗号需要用双引号包裹
- 第三行 Model 的值是
Venture "Extended Edition"
由于包含双引号必须被包裹,并且双引号还必须由两个双引号表示 - 第四行和第五行算是一条记录,因为 Description 中包含了
\n
因此需要被双引号包裹