CSVライブラリ
require 'csv'
これで読み込める
CSV.read
csv.rb
require 'csv'
csv_data = CSV.read('member.csv', headers: true)
.read(読み込むcsvの指定,headers:無視したいヘッダー行があるか)
headers:trueにすると上の一行をheaderとして無視する。
CSV.foreach
.readで一気に読み込むのと結果は変わらないがこのやり方でも読み込める
csv.rb
require 'csv'
CSV.foreach('member.csv', headers: true) do |data|
intro_msg = "#{data["club"]}クラブ所属の#{data["age"]}歳、#{data["name"]}です。\n"
puts intro_msg
end
CSV.generate
generateはcsvを逆に生成するためのメソッド
csv.rb
require 'csv'
intro_csv = CSV.generate do |csv|
CSV.foreach('member.csv', headers: true) do |data|
intro_msg = [
data["id"],
data["name"],
"#{data["club"]}クラブ",
"#{data["age"]}歳"
]
csv << intro_msg
puts intro_msg
end
end
File.open("intro.csv", 'w') do |file|
file.write(intro_csv)
end
このメソッドは与えられた文字列をラップして CSV のオブジェクトとしてブロックに渡します。 ブロック内で CSV オブジェクトに行を追加することができます。 ブロックを評価した結果は文字列を返します。
https://docs.ruby-lang.org/ja/latest/method/CSV/s/generate.html
generateは1行ずつなので繰り返しかつ1行ずつintro_csvに入れていっているという処理。