smarter_csv 中转义的引用字段

Quoted fields escaped in smarter_csv

我在 Ruby 中尝试使用 smarter_csv 处理一个 CSV 文件。每个字段都有双引号,有些字段中嵌套了双引号,不会转义。我正在使用 :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\"" }

> 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 数据包含一个嵌入的逗号,并且将数据行简单拆分会产生四个字段,而不是三个。

因为您没有提供第四个字段header,第四个字段被忽略。

请按照您的示例打开一个问题以正确处理引用的数据