libro
www.tuyano.com
初心者のためのRubyプログラミング入門

CSVファイル・アクセス (1/4)

作成:2013-03-18 07:29
更新:2013-03-18 07:29

■CSVクラスでCSVファイルを読み込む

テキストファイルは、さまざまなデータを保管するのに用いられます。中でもデータ保存に多用されるのが「CSVファイル」です。これは表のデータを保存するためのもので、表計算ソフトなどで利用されます。

CSVは1つ1つの値をカンマで区切り、まとまったデータを1行ずつ改行して記述した形を指定ます。ExcelやGoogleドライブの表計算など、多くのスプレッドシートソフトで使われています。

このCSVファイルを利用するための機能は、「CSV」というクラスとして用意されています。これは標準で用意されているものですが、そのままでは使えません。以下のようにして明示的に読み込ませて利用します。
require 'csv'
このクラスには、CSVデータを利用するためのさまざまなメソッドが用意されています。中でも、CSVデータを行単位で読み込み処理していくためのメソッドとして用意されているのが「foreach」です。これは以下のような形をしています。
CSV.foreach( ファイルのパス ){ | 変数 |
    ……変数の配列から要素を取り出し処理……
}
基本的には、先にテキストファイルを読み込む際、Fileで使ったforeachとほぼ同じような形を指定ますね。引数としてファイルのパスを指定します。その後に{}があり、| 変数 |というものがついています。ここに用意した変数に、1行ずつ読み込まれたデータが代入されていきます。ただし、そのままデータが代入されるのではなく、読み込んだ行にある1つ1つの値を配列の形にまとめたものが代入されるのです。従って、後はこの配列から必要な値を取り出すだけです。

下のリスト欄に簡単なサンプルを挙げておきます。これはsample.csvというファイルを読み込み、その各データを一覧表示するものです。スクリプトファイルと同じ場所にこんな感じでcsvファイルを用意しておきましょう。
hanako,hanako@flower,080-8888-8888
sachiko,sachi@co,070-7777-7777
tuyano,syoda@tuyano.com,090-9999-9999
taro,taro@yamada,03-555-555
ichiro,ichiro@base.ball,123-4567
これで「sample.csv」というファイル名で保存し、ファイルの内容が読み込めるかどうか確認してみましょう。ここではforeachの{}内に、以下のような形で各値を書き出す処理が用意されています。
puts row[0] + "\t" + row[1] + "\t" + row[2]
既に各値は配列にまとめられていますから、必要な値を取り出し処理するのも簡単です。記述したデータの並び順と、配列から取り出される値がきちんと対応していることがわかりますね。CSVデータ利用の基本としてこのforeachを使ったやり方を覚えておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

# coding: utf-8
require 'csv'
CSV.foreach('sample.csv'){|row|
    puts row[0] + "\t" + row[1] + "\t" + row[2]
}
puts('sample.txt を読み込みました。')

※関連コンテンツ

「初心者のためのRubyプログラミング入門」に戻る