csv文件解读
基本规则
CSV格式是分隔的数据格式,有字段/列分隔的逗号字符和记录/行分隔换行符。字段包含特殊字符(逗号,换行符,或双引号),必须以双引号括住。行内包含一个项目是空字符串,可以以双引号括住。字段的值包含双引号时,要双写这个双引号(就像把一个双引号当做转义符一样)。CSV文件格式并不需要特定的字符编码,字节顺序,或行终止格式。
-
每个记录是一个行终止了换行符(
ASCII码/低频= 0×0A)或回车换行符和一双(ASCII码/ CRLF = 0×0D0×0A),然而,线路中断可以嵌入。 -
字段用逗号分隔(虽然地点在逗号作为小数点,分号是用来代替作为定界符)
1997,Ford,E350
-
在某些的CSV实施,领导和尾随空格或制表符,毗邻逗号,装饰。这种做法是有争议的 , 实际上是明文禁止的RFC 4180,其中规定,“被认为是空间的一个组成部分领域 , 而不应被忽视。”
-
各领域内的嵌入式逗号必须存放在双引号字符。
-
各领域内的嵌入式双引号字符必须是封闭的双引号字符,每一个嵌入式双引号字符必须用一对双引号字符。
-
各领域内的嵌入式换行符必须封闭在双引号字符。
-
领域的前导或尾随空格内必须封闭双引号字符。 (见评论领导和尾随
空格以上。) -
字段可能永远是封闭的双引号字符,是否有必要或没有。
-
第一条记录中的CSV文件中可能包含列名的每个领域。
举例说明
年
|
制造商
|
型号
|
说明
|
价值
|
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
|
上面表格内容若以CSV格式表示就会像下列:
年,制造商,型号,说明,价值
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!
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
以上这个CSV的例子说明了:
-
包含逗号, 双引号, 或是换行符的字段必须放在引号内.
-
字段内部的引号必须在其前面增加一个引号来实现文字引号的转码.
-
分隔符逗号前后的空格
可能不会 被修剪掉. 这是RFC 4180的要求.