2015-02-08 2 views
1

У меня есть файл CSV, который я пытаюсь обработать с помощью smarter_csv в Ruby. Каждое поле имеет двойные quuotes, и есть некоторые поля, которые имеют двойные кавычки, вложенные в них, которые не экранированы. Я использую :force_simple_split => trueas suggested in the documentation, чтобы исправить эту ситуацию. Однако, когда я пытаюсь обработать файл, каждое поле имеет скрытые кавычки внутри него. Что я здесь делаю неправильно?Котировки полей, экранированных в smarter_csv

Я открываю файл CSV, который был создан с сервера Windows, который выглядит примерно так ...

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

[опишите проблему] (https://github.com/tilo/smarter_csv/issues) – Tilo

ответ

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-данных содержится встроенная запятая, а простое разделение строки с данными приводит к четырем полям, а не к трем.

Поскольку вы не предоставляете четвертый заголовок, четвертое поле игнорируется.

Пожалуйста открыть вопрос для правильной обработки котировочных данных, как в вашем примере

Смежные вопросы