コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

RubyのCSVライブラリは header: true とすると1行目の行情報でハッシュのように扱える

トリビア風タイトルネタ

環境

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18]

実例

例えばこんなCSVがあった場合

no,name,age
1,Taro,20
2,Ziro,31
3,Saburo,33

名前のnameだけ出力したいなぁとかなると、CSVの1行目を削ってからReadしなきゃとか思うんですが、header: true のオプションをつければ解決します

require 'CSV'
CSV.read("test.csv", headers: true).each do |line| p line[1] end
"Taro"
"Ziro"
"Saburo"

また、これの[1] の指定も1行目(ヘッダ)の行で指定したものを引数として指定できる

CSV.read("test.csv", headers: true).each do |line| p line["name"] end

参考リンク