Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > csvライブラリ > CSVクラス

class CSV

クラスの継承リスト: CSV < Object < Kernel < BasicObject

Abstract

CSV (Comma Separated Values) を扱うクラスです。

各メソッドの共通パラメタ

mode
   'r', 'w', 'rb', 'wb' から指定可能です。

   - 'r' 読み込み
   - 'w' 書き込み
   - 'b' バイナリモード
fs
   フィールドの区切り文字
   デフォルトは ','
rs
   行区切り文字。nil (デフォルト) で CrLf / Lf。
   Cr で区切りたい場合は ?\r を渡します。

特異メソッド

foreach(path[, rs = nil]) {|row| ... } -> nil

読み込みモードでファイルを開き、各行を配列でブロックに渡します。

[PARAM] path:
パースするファイルのファイル名
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。

注意:

パース時に""(空文字)と値なしを区別します。
例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。

例:

CSV.foreach('test.csv'){|row|
  puts row.join(':')
}
generate(path[, fs = nil[, rs = nil]]) -> CSV::BasicWriter
generate(path[, fs = nil[, rs = nil]]) {|writer| ... } -> nil

path で指定されたファイルを書き込みモードで開き、ブロックに渡します。 ブロック未指定の場合は CSV::BasicWriter を返します。

[PARAM] path:
書き込みモードでopenするファイルのファイル名
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。

注意:

ファイル書き込み時に""(空文字)と値なし(nil)を区別します。
例えば、["a", "", nil, "b"] の配列を渡した場合に a, "", , b という行をファイルに書き込みます。

例:

a = ["1","ABC","abc"]
b = ["2","DEF","def"]
c = ["3","GHI","ghi"]
x = [a, b, c]

CSV.generate("test2.csv"){|writer|
  x.each{|row|
    writer << row
  }
}
generate_line(row[, fs = nil[, rs = nil]]) -> String
generate_line(row[, fs = nil[, rs = nil]]) {|s| ... } -> nil

row で指定された配列をパースし、fs で指定された文字をフィールドセパレータとして 1行分の文字列をブロックに渡します。 ブロック未指定の場合は変換された文字列を返します。

[PARAM] row:
パースする配列
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。
open(path, mode[, fs = nil[, rs = nil]]) {|row| ... } -> nil
open(path, mode[, fs = nil[, rs = nil]]) -> CSV::Reader
open(path, mode[, fs = nil[, rs = nil]]) -> CSV::Writer

CSVファイルを読み込んでパースします。

読み込みモード時には path にあるファイルを開き各行を配列として ブロックに渡します。

[PARAM] path:
パースするファイルのファイル名
[PARAM] mode:
処理モードの指定 'r', 'w', 'rb', 'wb' から指定可能です。 - 'r' 読み込み - 'w' 書き込み - 'b' バイナリモード
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。

注意:

パース時に""(空文字)と値なし(nil)を区別します。
例えば、読み込みモード時にa, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。

例:

CSV.open("/temp/test.csv", 'r') do |row|
  puts row.join("<>")
end

tsv(Tab Separated Values)ファイルなどのセパレータをカンマ以外で指定

CSV.open("/temp/test.tsv", 'r', "\t") do |row|
  puts row.join("<>")
end

ブロックを渡さなかった場合 CSV::Reader を返します。

書き込みモード時には path にあるファイルを開き CSV::Writer をブロックに渡します。

例:

CSV.open("/temp/test.csv", 'w') do |writer|
  writer << ["ruby", "perl", "python"]
  writer << ["java", "C", "C++"]
end

ブロック未指定の場合 CSV::Writer を返します。

parse(str_or_readable[, fs = nil[, rs = nil]]) -> Array
parse(str_or_readable[, fs = nil[, rs = nil]]) {|rows| ... } -> nil

str_or_readable で指定された文字列をパースし配列の配列に変換、ブロックに渡します。 ブロック未指定の場合は変換された配列の配列を返します。

[PARAM] str_or_readable:
パースする文字列
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。

例:

CSV.parse("A,B,C\nd,e,f\nG,H,I"){|rows|
  p rows
}
parse_line(src[, fs = nil[, rs = nil]]) -> Array
parse_line(src[, fs = nil[, rs = nil]]) {|row| ... } -> nil

src で指定された文字列を1行分としてパースし配列に変換、ブロックに渡します。 ブロック未指定の場合は変換された配列を返します。

[PARAM] src:
パースする文字列
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。
read(path[, length = nil[, offset = nil]]) -> Array

path で指定された CSV ファイルを読み込み、配列の配列でデータを返します。

[PARAM] path:
パースするファイルのファイル名
[PARAM] length:
対象ファイルの読み込みサイズ
[PARAM] offset:
読み込み開始位置

注意:

パース時に""(空文字)と値なしを区別します。
例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。
readlines(path[, rs = nil]) -> Array

path で指定された CSV ファイルを読み込み、配列の配列でデータを返します。

[PARAM] path:
パースするファイルのファイル名
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。

注意:

パース時に""(空文字)と値なしを区別します。
例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。

Methods

Classes