Previous: Margs 引数操作クラス Up: クラス Next: モジュールメソッド RubyM
RubyM : クラス : Mtable CSVデータのセル単位での読み込み操作クラス

2.4 Mtable CSVデータのセル単位での読み込み操作クラス

指定したCSVデータ全体をメモリに読み込み、セル単位でランダムアクセスを可能としたクラス。 以下のような特徴を持つ。

  • 行と列の指定によりセルをランダムにアクセス可能。

  • 読み込み専用であり、データの更新や追加は一切できない。

  • データは全て文字列として読み込むので、その他の方で利用する時は適宜型変換(ex. to_i)が必要。

  • メモリが空いている限りデータを読み込む。領域がなくなればエラー終了する。

2.4.1 メソッド

* MCMD::Mtable::new(arguments)

Mtableオブジェクトを生成する。 argumentsに、以下の引数をスペースで区切った文字列として指定する。

i=

入力ファイル名(String)

-nfn

1行目を項目名と見なさない。

* MCMD::Mtable::cell(col=0, row=0) -> String

row(行),col(列)に対応するセルの値を返す。 row,colの与え方は、列番号と行番号による。 列/行番号共に0から始まる整数(Mcsvinの列番号は1から始まる)。 row,colが範囲外の場合はnilを返す。

row

行番号で、0以上の整数を用いる。デフォルトは0。

col

列番号で、0以上の整数を用いる。項目名は指定できない。デフォルトは0。

colのみ与えると0行目のcol番目の項目の値を返す。cell(col,0)を指定したのと同等。 またcol,row両方とも与えなければ0行目の0項目目の値を返す。cell(0,0)を指定したのと同等。

* MCMD::Mtable::names() -> String Array

項目名配列を返す。

* MCMD::Mtable::name2num() -> String=>Fixnum Hash

項目名をキー、対応する項目番号を値とするHashを返す。

* MCMD::Mtable::size() -> Fixnum

行数を返す。

2.4.2 利用例

例1

# dat1.csv
customer,date,amount
A,20081201,10
B,20081002,40

tbl=MCMD::Mtable.new("i=dat1.csv")
p tbl.names     # -> ["customer", "date", "amount"]
p tbl.name2num  # -> {"amount"=>2, "date"=>1, "customer"=>0}
p tbl.size      # -> 2
p tbl.cell(0,0) # -> "A"
p tbl.cell(0,1) # -> "B"
p tbl.cell(1,1) # -> "20081202"
p tbl.cell(1)   # -> "20081201"
p tbl.cell      # -> "A"

例2 項目名行なし

# dat1.csv
customer,date,amount
A,20081201,10
B,20081002,40

tbl=MCMD::Mtable.new("i=dat1.csv -nfn") # 一行目もデータと見なしてしまう。
p tbl.names     # -> nil
p tbl.name2num  # -> nil
p tbl.size      # -> 3
p tbl.cell(0,0) # -> "customer"
p tbl.cell(0,1) # -> "A"
p tbl.cell(1,1) # -> "20081201"
p tbl.cell(1)   # -> "date"
p tbl.cell      # -> "customer"

2.4.3 関連コマンド

Mcsvin : CSVデータの読み込み

Previous: Margs 引数操作クラス Up: クラス Next: モジュールメソッド RubyM