Ruby
RubyOnRails

railsでcsvを色々できるCSVメソッド

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に入れていっているという処理。

参考にした記事

https://qiita.com/shizuma/items/7719172eb5e8c29a7d6e