Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > csvライブラリ > CSVクラス
クラスの継承リスト: CSV < Object < Kernel
CSV (Comma Separated Values) を扱うクラスです。
各メソッドの共通パラメタ
mode 'r', 'w', 'rb', 'wb' から指定可能です。 - 'r' 読み込み - 'w' 書き込み - 'b' バイナリモード fs フィールドの区切り文字(あるいは文字列)。 数値(Integer#chr で変換可能な値のみ)を指定した場合は対応する文字が区切り文字になります。 デフォルトは ','。 rs 行区切り文字。nil (デフォルト) で CrLf / Lf。 Cr で区切りたい場合は ?\r を渡します。
foreach(path, rs = nil) {|row| ... } -> nil
[permalink][rdoc]読み込みモードでファイルを開き、各行を配列でブロックに渡します。
パース時に""(空文字)と値なしを区別します。 例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。
例:
CSV.foreach('test.csv'){|row| puts row.join(':') }
generate(path, fs = nil, rs = nil) -> CSV::BasicWriter
[permalink][rdoc]generate(path, fs = nil, rs = nil) {|writer| ... } -> nil
path で指定されたファイルを書き込みモードで開き、ブロックに渡します。 ブロック未指定の場合は CSV::BasicWriter を返します。
ファイル書き込み時に""(空文字)と値なし(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
[permalink][rdoc]row で指定された配列をパースし、fs で指定された文字をフィールドセパレータとして 1行分の文字列を返します。
generate_row(src, cells, out_dev, fs = nil, rs = nil) -> Fixnum
[permalink][rdoc]src で指定された配列をパースして csv形式の文字列として(行区切り文字も含めて) out_dev に出力します。 返り値として fs で区切ったフィールド(cell)の数を返します。
配列のパース時に""(空文字)と値なし(nil)を区別します。 例えば、["a", "", nil, "b"] の配列を渡した場合に a,"", , b という文字列を生成します。
例:
row1 = ['a', 'b', 'c'] row2 = ['1', '2', '3'] row3 = ['A', 'B', 'C'] src = [row1, row2, row3] buf = '' src.each do |row| parsed_cells = CSV.generate_row(row, 2, buf) end p buf #=>"a,b\n1,2\n,A,B\n"
open(path, mode, fs = nil, rs = nil) {|row| ... } -> nil
[permalink][rdoc]open(path, mode, fs = nil, rs = nil) -> CSV::Reader | CSV::Writer
CSVファイルを読み込んでパースします。
読み込みモード時には path にあるファイルを開き各行を配列として ブロックに渡します。
パース時に""(空文字)と値なし(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
[permalink][rdoc]parse(str_or_readable, fs = nil, rs = nil) {|rows| ... } -> nil
str_or_readable で指定された文字列をパースし配列の配列に変換、ブロックに渡します。 ブロック未指定の場合は変換された配列の配列を返します。
例:
CSV.parse("A,B,C\nd,e,f\nG,H,I"){|rows| p rows }
parse_line(src, fs = nil, rs = nil) -> Array
[permalink][rdoc]src で指定された文字列を1行分としてパースし配列に変換して返します。
parse_row(src, index, out_dev, fs = nil, rs = nil) -> Array
[permalink][rdoc]CSV形式の文字列をパースしてCSV1行(row)分のデータを配列に変換し out_dev に出力します。
パース時に""(空文字)と値なしを区別します。 例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。
例:
src = "a,b,c\n1,2\nA,B,C,D" i = 0 x = [] #結果を格納する配列 begin parsed = [] parsed_cells, i = CSV.parse_row(src, i, parsed) x.push(parsed) end while parsed_cells > 0 x.each{ |row| p '-----' row.each{ |cell| p cell } }
実行結果:
a b c ----- 1 2 ----- A B C D
read(path, length = nil, offset = nil) -> Array
[permalink][rdoc]path で指定された CSV ファイルを読み込み、配列の配列でデータを返します。
パース時に""(空文字)と値なしを区別します。 例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。
readlines(path, rs = nil) -> Array
[permalink][rdoc]path で指定された CSV ファイルを読み込み、配列の配列でデータを返します。
パース時に""(空文字)と値なしを区別します。 例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。