分享

Chinook Coffee: 如何在CSV文件中使用逗号做分隔符

 Online_study 2011-05-16

如何在CSV文件中使用逗号做分隔符

CSV全称是:Comma Separated Values or Character Separated Values。尽管第一种说法更常用,但我觉得还是第二种说法更确切一些,毕竟你可以使用其它字符做分隔符。

使用逗号做分隔符的CSV文件有一个好处:你可以直接用Excel打开。如果使用其它分隔符,比如“|”,你必须告诉Excel该文件使用“|”作分隔符,Excel才能把它导入进来。

前几天,project manager告诉我:我们有许多CSV文件,都是使用“|”做分隔符,用Excel打开的时候比较麻烦,用户想在Excel中直接打开。这样就需要使用,做分隔符。但是文件中有些字段含有逗号,必须对这些字段特殊处理,才能保证CSV文件在Excel中正确打开。他还给了我一个算法:

如果字段中有逗号,该字段使用双引号括起来;

如果该字段中除了有逗号,还有双引号,该字段中的所有双引号前都要再加一个双引号,然后整个字段使用双引号括起来。

看完project manager的要求,我真是满头起包啊。在IT业混了十几年了,竟然不知道这样处理逗号。

我创建了一个CSV文件,输入一些字段,然后用Excel测试,发现还有一种情况需要注意:

如果一个字段是以双引号开始的,这个字段也需要特殊处理:先在这个双引号前加双引号,然后再把整个字段使用双引号括起来。如果不这样做,在Excel中该字段以及下面的一行不能正确显示。

总的来说,伪代码大概是这样:

如果某字段含有逗号,或者该字段首字符是双引号

把该字段中的每一个双引号替换成两个双引号,

然后在该字段头尾加双引号。

举几个例子:

字段处理前

字段处理后

abc,d2

"abc,d2"

ab"c,d2

"ab""c,d2"

"abc

"""abc"

""

""""""

如果字段中有两个挨着的双引号,比如:aaa""ccc。这种情况不用特殊处理。这是我在写这篇博客的时候才想起来的,赶忙使用Excel测试了一下。还好,不用特殊处理就能正常打开,不然我还得改程序。当然了,如果你把它处理成:"aaa""""ccc" Excel也能正常打开。事后总结总结真是有好处啊。

另外,如果某字段第一个字符是空格,第二个字符是双引号,这种情况不用特殊处理。Project Manager在给我描述算法的时候,也举了一个字段只有一个双引号的例子,但他不小心在双引号前面加了个空格,把问题掩盖过去了。

我是在WinXPMS Excel2007下测试的。如果运行在其他环境和应用程序下,还需进行测试,规则可能不一样。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多