Ошибка импорта CSV через гем smartercsv

У меня есть эта структура CSV

"CATEGORY";"NAME";"AGE"
"Red";"John";"34"

Когда я импортирую файл через гем smarter_csv, я получаю этот хеш

{:"\"CATEGORY\""=>"\"Red\"", :"\"NAME\""=>"\"John\"", :"\"AGE\""=>"\"34\""}

Код, который я использую, является следующим

options = {:col_sep => ";",:row_sep => :auto, :quote_char => "\x00"}
SmarterCSV.process(save_folder, options) do |array|
    Item.create(array.first)
end

Что меня озадачивает, так это \ ", который добавляется в каждый элемент хэша. Я использовал этот же метод раньше без проблем, и я не понимаю, что происходит неправильно, но ожидаемый хэш должен быть плановым текстом без обратной косой черты и дополнительных кавычки. Как примечание, я не использую опцию ";quote_char => "\x00"", я получаю искаженную ошибку CSV.

1 ответ

Это работает "из коробки", но выбранный вами quote_char был неверным; так должно быть '"', который является настройкой по умолчанию.

      require 'smarter_csv'
      SmarterCSV::VERSION
       => "1.2.3"

      data = SmarterCSV.process('/tmp/test.csv', {:col_sep => ";"})
       => [{:category=>"Red", :name=>"John", :age=>34}]

      # or like this:

      data = SmarterCSV.process('/tmp/test.csv', {
         :col_sep => ";",:row_sep => :auto, :quote_char => '"'
      })
       => [{:category=>"Red", :name=>"John", :age=>34}]          
Другие вопросы по тегам