Невозможно проанализировать файл CSV - "CSV::MalformedCSVError: поля без кавычек не допускают \r или \n"
Я пытаюсь проанализировать загруженные файлы CSV. Вот полное сообщение об ошибке:
[Worker(host:PC.local pid:69594)] Job ImportJob (id=4) FAILED (3 prior attempts) with CSV::MalformedCSVError: Unquoted fields do not allow \r or \n (line 1).
И файлы CSV выглядят так:
A1;A2;A3;A4;A5
B1;B2;B3;B4;B5
C1;C2;C3;C4;C5
И вот как я перебираю данные в файле CSV:
data = SmarterCSV.process(
file,
{
:col_sep => ';',
:chunk_size => 100,
:remove_empty_values => false,
:remove_empty_hashes => false
}
) do |d|
В чем здесь проблема? Я пытался поместить заголовок в файл, даже пытался удалить его (версия опубликована выше), но в обоих случаях я получаю ту же ошибку. Как мне от этого избавиться?
2 ответа
Предполагая, что файл CSV был создан в Windows, неудивительно, что окончание строки - "\r\n". Попробуйте явно сделать это вашим разделителем строк:
:row_sep => "\r"
Собираем все вместе:
data = SmarterCSV.process(file,
:col_sep => ';',
:row_sep => "\r",
:chunk_size => 100,
:remove_empty_values => false,
:remove_empty_hashes => false) do |d|
Я столкнулся с этой проблемой, но со встроенным модулем CSV.
Я решил это, используя режим чтения ввода-вывода в виде текста: "rt", а не "r":
require 'csv'
CSV.open(file_name, 'rt').each do |row|
# blah, blah
end