我有一个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\""
}
答案 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数据包含一个嵌入式逗号,并且该行与数据的简单拆分会产生四个字段,而不是三个字段。
因为您没有提供第四个标题,所以会忽略第四个字段。
请按照示例
打开正确处理引用数据的问题