CSV 和带空格的字段

Jim*_*Jim 4 csv perl

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

john,smith,"Some address",,,,bla  
Run Code Online (Sandbox Code Playgroud)

我想知道示例中是否必须使用双引号?或者它是一些配置选项?

Jam*_*een 5

正如 Subbeh 已经建议的那样,您可以quote_char在调用时设置为 undef new,以抑制这种情况,根据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在调用中设置为 false 值new以防止这种特定行为(引用带有空格的字段),CSV 规范既不强制也不禁止。

  • 使用 [`quote_space`](https://metacpan.org/pod/Text::CSV_XS#quote_space) 而不是 `quote_char` 来处理包含空格的字段的引用。 (5认同)