引用字段在smarter_csv中转义

时间:2015-02-08 06:12:55

标签: ruby csv smartercsv

我有一个CSV文件,我正在尝试使用Ruby中的smarter_csv进行处理。每个字段都有双重的quuotes,并且有些字段嵌套在其中的双引号不会被转义。我正在使用:force_simple_split => true as suggested in the documentation来解决这种情况。但是,当我尝试处理文件时,每个字段都在其中转义了引号。我在这里做错了什么?

我正在打开一个从Windows服务器生成的csv文件,看起来像这样...

header1,header2,header3 "field1, There are "nested quotes" here.","field2", "field3"

我用smarter_csv打开文件就像这样......

c = SmarterCSV.process('myfile.csv', force_simple_split: true, file_encoding: "iso-8859-1", row_sep: "\r")

然后我得到这样的输出......

{:header1=>"\"field1, There are \"nested quotes\"", :header2=>"\"field2\"", :header3=>"\"field3\"" }

1 个答案:

答案 0 :(得分:0)

> SmarterCSV::VERSION
 => "1.0.19"
> options = {:force_simple_split => true}
> ap SmarterCSV.process('/tmp/quoted.csv', options)
[
   {
        :header1 => "\"field1",
        :header2 => "There are \"nested quotes\" here.\"",
        :header3 => "\"field2\""
    }
]

force_simple_split就是这样......它不允许在数据中嵌入:col_sep字符。

请注意,您的示例CSV数据包含一个嵌入式逗号,并且该行与数据的简单拆分会产生四个字段,而不是三个字段。

因为您没有提供第四个标题,所以会忽略第四个字段。

请按照示例

打开正确处理引用数据的问题