require 'csv'このクラスには、CSVデータを利用するためのさまざまなメソッドが用意されています。中でも、CSVデータを行単位で読み込み処理していくためのメソッドとして用意されているのが「foreach」です。これは以下のような形をしています。
CSV.foreach( ファイルのパス ){ | 変数 |基本的には、先にテキストファイルを読み込む際、Fileで使ったforeachとほぼ同じような形を指定ますね。引数としてファイルのパスを指定します。その後に{}があり、| 変数 |というものがついています。ここに用意した変数に、1行ずつ読み込まれたデータが代入されていきます。ただし、そのままデータが代入されるのではなく、読み込んだ行にある1つ1つの値を配列の形にまとめたものが代入されるのです。従って、後はこの配列から必要な値を取り出すだけです。
……変数の配列から要素を取り出し処理……
}
hanako,hanako@flower,080-8888-8888これで「sample.csv」というファイル名で保存し、ファイルの内容が読み込めるかどうか確認してみましょう。ここではforeachの{}内に、以下のような形で各値を書き出す処理が用意されています。
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
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 を読み込みました。')
次へ >> |