Ruby CSVファイルの読み取り

2018年6月21日木曜日

Ruby

t f B! P L
Ruby 日付関連処理

Ruby CSVファイルの読み取り

CSVファイルの内容を読み取るサンプル

CSV.foreach メソッド

サンプルコード

require  'csv'

# CSVファイルのパスを指定して、CSVの行数分ブロックの評価を行う
CSV.foreach("path/to/filename.csv") do |row|
 # 1列目の値を取り出す
 p row[0]
end

構文

CSV.foreach(path, options = Hash.new) {|row| ... } -> nil

options で指定可能な内容

key 内容
:col_sep フィールドの区切り文字列を指定します。
:quote_char フィールドをクオートする文字を指定します。長さ 1 の文字列でなければなりません。正しいダブルクオートではなく間違ったシングルクオートを使用しているアプリケーション で便利です。
:headers true を指定すると、CSV ファイルの一行目をヘッダとして扱います。 配列を指定するとそれをヘッダとして扱います。
:skip_blanks 真を指定すると、空行を読み飛ばします。
:skip_lines 指定した正規表現にマッチしたそれぞれの行をコメントとして読み飛ばします。

エンコーディングの問題

foreach メソッドの場合、UTF-8のファイルしか処理出来ません。
UTF-8、Shift-JIS両方に対応したい場合は、
open関数でエンコーディング指定でファイルを開いた後、
CSV.new で CSVファイルの内容を読み込みます。

open("path/to/filename.csv", "rb:Shift_JIS:UTF-8", undef: :replace) do |f|
  CSV.new(f).each do |row|
   # 1列目の値を取り出す
    p row[0]
  end
end

CSV.new コンストラクタ

構文

CSV.new(f, options = Hash.new) {|row| ... } -> nil

引数 f には、String か IO のインスタンスを指定します。
String を指定する場合は、 “111, 2222, 333” などの CSV データを指定します。

options で指定可能な内容

CSV.foreach 関数と同じオプションが指定可能です。

スポンサーリンク

QooQ