Ошибка импорта 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}]