Ich muss Header in einer CSV-Datei validieren, bevor Sie Daten darin analysieren.Wie bekomme ich Header aus einer CSV-Datei in Ruby
# convert the data into an array of hashes
CSV::Converters[:blank_to_nil] = lambda do |field|
field && field.empty? ? nil : field
end
csv = CSV.new(file, :headers => true, :header_converters => :symbol, :converters => [:all, :blank_to_nil])
csv_data = csv.to_a.map {|row| row.to_hash }
Ich weiß, dass ich Header-Methode verwenden, können die Header
headers = csv.headers
Aber das Problem mit headers method ist es „Returns zu bekommen nil wenn Header nicht verwendet werden, wahr, wenn sie wollen, aber noch nicht gelesen wurde, oder die tatsächlichen Header, nachdem sie gelesen wurden. "
Wenn ich also headers = csv.headers
oben csv_data = csv.to_a.map {|row| row.to_hash }
Spiel setzen headers
true
ist, und wenn ich es nach dem Lesen der Daten, enthalten headers
Zeilenüberschriften in einem Array. Es enthält eine Reihenfolge von Anweisungen zu meiner Methode, die sehr schwer zu testen ist und eine schlechte Programmierung darstellt.
Gibt es eine Möglichkeit, Kopfzeilen zu lesen, ohne Reihenfolge in diesem Szenario aufzuerlegen? Ich benutze Ruby 2.0.