CSV和带空格的字段

时间:2014-06-03 11:01:05

标签: perl csv

我正在使用Text::CSV_XS来创建CSV文件。我看到如果一个字段有一个空格,那么它在双引号内输出,例如

john,smith,"Some address",,,,bla  

我想知道示例中的双引号是强制性的吗?或者它是一些配置选项?

2 个答案:

答案 0 :(得分:4)

正如Subbeh已经建议的那样,您可以在调用quote_char时将new设置为undef,根据https://metacpan.org/pod/Text::CSV_XS#new

来禁止此操作

我会怀疑你是否。在CSV规范https://tools.ietf.org/html/rfc4180中,这些引号始终是允许的,有时是必要的(尽管严格地说,仅当字段包含分隔符或引号字符本身时)。因为它们在那里完全有效,并且你将数据传递给以后的任何CSV解析工具都会应付......我倾向于让Text :: CSV做它的事情。

特别是,如果您按照建议将quote_char设置为undef,则包含sep_char(通常为逗号)的字段将导致破损。

修改:您可以在调用quote_space时将new设置为false值,以防止此特定行为(引用包含空格的字段),CSV规范既不强制也不禁止。

答案 1 :(得分:3)

您可以设置quote_char来更改此行为:

  

<强> quote_char

     

引用包含空格或二进制数据的字段的字符,默认为双引号字符(")。值undef会抑制引用字符(仅适用于简单情况)。仅限于单字节字符,通常在0x20(空格)到0x7E(代字号)的范围内。

     

quote_char不能等于sep_char

来自https://metacpan.org/pod/Text::CSV_XS#new