Мне нужно проверить заголовки в CSV файле перед анализом данных в нем.
# 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 }
Я знаю, что могу использовать метод заголовков для получения заголовков
headers = csv.headers
Но проблема с метод заголовков заключается в том, что он возвращает "нет", если заголовки не будут использоваться, правда, если они будут, но еще не прочитаны, или фактические заголовки после того, как они были прочитаны. "
Итак, если я помещаю headers = csv.headers
выше csv_data = csv.to_a.map {|row| row.to_hash }
, строка headers
равна true
, и если я поместил ее после чтения данных, headers
содержит строку заголовков в массиве. Он накладывает порядок инструкций по моему методу, который очень трудно проверить и плохо программирует.
Есть ли способ прочитать строку заголовков без наложения порядка в этом сценарии? Я использую ruby 2.0.