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,第四个字段被忽略。
请按照您的示例打开一个问题以正确处理引用的数据
我在 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,第四个字段被忽略。
请按照您的示例打开一个问题以正确处理引用的数据