RubyでCSV.tableを使うことに関して

More than 5 years have passed since last update.

RubyでCSVを扱う時にちょっと調べたのでまとめておきます。


data.csv

time,text,user

10:00,Hello,tarou
20:10,GOODNIGHT,miki
03:00,SINTYOKUDAME,se


csv_table.rb

require 'csv'

csv = CSV.table('data.csv')

time = csv[:time] #ヘッダーを指定する場合

puts time.class # => array
puts time # => 10:00
# 20:00
# 03:00

one = csv[1] #行を指定する場合
puts one.class # => CSV::Row
puts one # => 20:10,GOODNIGHT,miki
puts one[:time] # => 20:10


CSVライブラリで.tableした際、ヘッダーを指定した場合は配列として扱うことが出来る。一方、行を指定した場合はCSV::Rowとして扱われる。なので、行指定の場合は、そこからさらにヘッダーを指定したりも出来る。