데이터를 파싱하기 전에 CSV 파일에서 헤더의 유효성을 검사해야합니다.루비의 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 }
나는 나는 그들이 경우는 true 헤더
headers = csv.headers
그러나 headers method에 문제가 헤더를 사용하지 않을 경우는 "반환 값이 nil 일을 얻을 헤더에게 방법을 사용할 수 있습니다 알고 있지만 아직하지 않은 읽은 후 또는 실제 헤더를 읽은 후. "
그래서 headers
이 true
입니다 csv_data = csv.to_a.map {|row| row.to_hash }
선 위에 headers = csv.headers
을 넣어 내가 데이터를 읽은 후 그것을 놓으면 경우, headers
배열에 헤더 행이 포함되어 있습니다. 그것은 테스트하기가 매우 어렵고 나쁜 프로그래밍 인 나의 방법에 명령 순서를 부과합니다.
이 시나리오에서 주문을 부과하지 않고 헤더 행을 읽는 방법이 있습니까? 나는 루비 2.0을 사용하고있다.