2016-07-21 2 views
0

Я пытаюсь импортировать некоторые CSV-данные, но по какой-то причине они не структурированы правильно и содержат недопустимые символы. Так, например, когда я делаю sale_hash["location"], он возвращает nil.CSV-данные не обрабатываются правильно

Вот функция, я использую:

def self.import(file) 
    CSV.foreach(file.path, headers: true, encoding:'iso-8859-1') do |row| 
    sale_hash = row.to_hash 
    p sale_hash 
    end 
end 

я получаю что-то вроде этого:

{ 
    "date;day;time;location;station;washer;plate_number;O;I;W;total_price;;;;" 
    => "23/04/16;SATURDAY;15:11;ALPHAMEGA LIN;GROUNDFLOOR;NIKOLAS APOSTOLIDES;KKY333;YES;NO;NO;Û2", 
    nil => "95;;;;" 
} 

Все, что я сделал было взять таблицу Excel и экспортировать его в CSV. Я здесь что-то не так?

+0

Похоже, что вы экспортировали его точка с запятой разделителями. Библиотека CSV по умолчанию имеет разделители запятой. –

+0

где я могу изменить это? –

+0

http://ruby-doc.org/stdlib-2.3.1/libdoc/csv/rdoc/CSV.html –

ответ

0

Права так благодаря Иордану и мю слишком короток, я получил это работает, добавив следующий col_sep:

def self.import(file) 
    csv = CSV.read(file.path, headers: true, col_sep: ";") 

    csv.each do |row| 
    sale_hash = row.to_hash 
    p sale_hash 
    end 
end 
Смежные вопросы