Skip to content

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
  1. 第一行是标题行
  2. 第二行 Description 是字符串其中包含了逗号需要用双引号包裹
  3. 第三行 Model 的值是 Venture "Extended Edition" 由于包含双引号必须被包裹,并且双引号还必须由两个双引号表示
  4. 第四行和第五行算是一条记录,因为 Description 中包含了 \n 因此需要被双引号包裹