2016-07-21 10 views
0

Ich versuche, einige CSV-Daten zu importieren, aber aus irgendeinem Grund sind sie nicht richtig strukturiert und enthalten ungültige Zeichen. Zum Beispiel, wenn ich sale_hash["location"] mache, gibt es nil zurück. HierCSV-Daten nicht korrekt analysiert

ist die Funktion, die ich benutze:

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 

ich so etwas wie dieses:

{ 
    "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;;;;" 
} 

Alles, was ich tat, war eine Excel-Tabelle übernehmen und es in CSV exportieren. Mache ich hier etwas falsch?

+0

Es sieht aus wie Sie es mit Semikolon Trennzeichen exportiert. Die CSV-Bibliothek verwendet standardmäßig Kommatrennzeichen. –

+0

wo ändere ich das? –

+0

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

Antwort

0

Rechts so dank Jordan und mu zu kurz ist, habe ich es, indem folgende col_sep arbeiten:

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