RubyでCSVファイルを操作する方法について解説します。
Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。
なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。
今回は、Rubyに関する内容だね!
どういう内容でしょうか?
RubyでCSVファイルを操作する方法について詳しく説明していくね!
お願いします!
CSVファイルとは
CSVファイルとは、カンマ「,」で区切られたテキストファイルのことを指します。
sample.csvなどのファイル名で保存されており、以下のような形式で書かれます。
分類,名前,値段,
野菜,トマト,100,
野菜,レタス,250,
果物,りんご,200,
飲料,コーヒー,120,
RubyのCSVクラスとは
Rubyには、CSVファイルを扱うためにCSVクラスが用意されています。これを使用することで、CSVファイルを読み込んだり、書き出したりすることができます。
CSVファイルを操作するための主なメソッド
CSVを読み込むメソッドとして、一度で読み込む「read」と1行づつ読み込む「foreach」があります。どちらもCSVファイルの存在するパスを引数にとります。
CSVを書き出すメソッドには、「open」があり、csvファイルに追記したり、新しく作成することができます。
実際に書いてみよう
では、実際に書いてみましょう。まず、下準備にsample.csvファイルを作成して、以下のCSVをコピーしてして貼り付けてみてください。
分類,名前,値段,
野菜,トマト,100,
野菜,レタス,250,
果物,りんご,200,
飲料,コーヒー,120,
そして、同じディレクトリに今回使用するmain.rbを作成してください。以下のような構成になるはずです。
-main.rb
-sample.csv
それでは読み込みからやります。
require 'csv'
# sample.csvを読み込む
csv_data = CSV.read("sample.csv")
# 返り値は2次元の配列になるので、以下のようにアクセスできる
puts csv_data[0][0] # =>分類
puts csv_data[1][1] # =>トマト
# headersをtrueにすると、1行目の値をindexの代わりに割り当てられる
csv_data_with_header = CSV.read("sample.csv", headers: true)
puts csv_data_with_header["分類"].join(",")
puts csv_data_with_header["名前"][3] # =>コーヒー
# foreachでcsvファイルを1行づつ読み込める
CSV.foreach("sample.csv") do |row|
puts row.join(",")
end
実行結果は、以下の通りです。
分類
トマト
野菜,野菜,果物,飲料
コーヒー
分類,名前,値段
野菜,トマト,100
野菜,レタス,250
果物,りんご,200
飲料,コーヒー,120
次に書き込みです。
# openで"w"を引数にすることで書き込みモードでCSVを開く
CSV.open("sample2.csv","w")do |csv|
csv <<["分類","名前","値段"]
csv <<["肉", "牛ひき肉","500"]
end
sample2.csvが作成できていれば、成功です。
以上で、解説を終わります。csvはよく使うので、ぜひマスターしましょう。
筆者プロフィール
メンター金成さん フリーランスエンジニア。 使える言語は、ruby python go 。最近はgoにハマってます。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。
また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。