概要
Structを使ってCSVの情報を取り込んでみる
詳細
Structを使ってCSVの情報を取り込んでみます
サンプルコード
# encoding: utf-8 CSV =<<EOS column1, column2, column3 data1_1, data1_2, data1_3 data2_1, data2_2, data2_3 data3_1, data3_2, data3_3 EOS csv_list = CSV.each_line.to_a csv_header = csv_list.first csv_datas = csv_list[1..-1] SampleCsv = eval "Struct.new #{csv_header.chop.gsub('column', ':column')}" sample_csv_list = [] csv_datas.each do |raw_data| normalize_data = raw_data.chop.split(',').map{|v|"'#{v}'"}.join(',') csv_record = eval "SampleCsv.new #{normalize_data}" sample_csv_list << csv_record end p sample_csv_list sample_csv_list.each_with_index do |value, index| puts "#{index}:#{value.column1}, #{value.column2}, #{value.column3}" end
出力
[#<struct SampleCsv column1="data1_1", column2=" data1_2", column3=" data1_3">, #<struct SampleCsv column1="data2_1", column2=" data2_2", column3=" data2_3">, #<struct SampleCsv column1="data3_1", column2=" data3_2", column3=" data3_3">] 0:data1_1, data1_2, data1_3 1:data2_1, data2_2, data2_3 2:data3_1, data3_2, data3_3