[adsense]
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
関数と同じオプションが指定可能です。
0 件のコメント:
コメントを投稿