论坛首页 综合技术论坛

CSV文件的一些注意点

浏览 2440 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-08-20  
狭义的csv是comma separated values.
wiki的定义
CSV is a delimited data format that has fields/columns separated by the comma character and records/rows terminated by newlines.

广义的csv是以任意一个字符分隔的平面文件。

没有严格的标准,RFC 4180试图规范化CSV。

每条记录结束于行终止符。
每个字段用分隔符分隔(一般是逗号)。

常见的一些约束:

DOS-style lines that end with (CRLF) characters
每一个记录包含相同数目的字段,并且字段顺序相同。
任何字段可以用双引号引住。
字段中如果包含(行结束符)\r\n,双引号,逗号,该字段必须用双引号包住。
字段中的双引号用连续2个双引号表示。同时,该字段必须用双引号包住。
CSV文件不需要特定的字符集,编码,byte order,行结束符。
字段中的数据按照字符解释,不按字节解释。
同一记录相邻字段必须用分隔符隔开。

看例子:



说明:
第1行
左边:比较简单,不解释。
右边:字段可以用双引号包住。

第2行
左边:b","b被解释为2个字段,前一个字段为b",后一个字段以双引号开始,所以会跨行寻找该字段的值,直到配对的双引号或文件结束。
右边:"b","b"被解释为2个被双引号包住的字段。

第3行
左边:"b"",""b"被解释为一个字段被双引号包住,中间的连续双引号被转义为双引号。
右边:"b,b"被解释为一个字段被双引号包住,中间的分隔符,原样输出。

第4行
左边:b","b被解释为2个字段,前一个字段为b",后一个字段以双引号开始,所以会跨行寻找该字段的值,直到配对的双引号或文件结束。
右边:b"","b被解释为2个字段,前一个字段为b"",因为该字段没有以双引号开始,因此,连续的双引号没有转义。

第5行
左边:b""b被解释为一个字段。
右边:验证双引号开始的字段的跨行查找。

第6行
左边:"""的情况,字段以双引号开始,接下来的2个双引号转义,接下来查找该字段的其他值。
右边:单引号没有特殊功能,空和""含义相同。

第6行
左边:验证单引号没有特殊功能。

  • 大小: 87.2 KB
   发表时间:2012-08-22  
没考虑数字?
0 请登录后投票
   发表时间:2012-08-22  
数字是显示的问题,和字段如何划分没有关系。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics