我需要在解析其中的數據之前驗證CSV文件中的標頭。如何從ruby中的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 method的問題是,它「返回nil,如果標題將不能使用,如果他們將真實的,但還沒有已被閱讀,或在閱讀完畢後的實際標題。「
所以,如果我把headers = csv.headers
上述csv_data = csv.to_a.map {|row| row.to_hash }
線headers
是true
,如果我把它讀取數據後,headers
包含在陣列中的行頭。它對我的方法施加了一個指令順序,這是很難測試的,並且是不好的編程。
有沒有辦法在這種情況下讀取標題行而不強加順序?我使用的是Ruby 2.0。