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

library csv

要約

CSV (Comma Separated Values) を扱うライブラリです。

このバージョンの CSV ライブラリは FasterCSV から始まりました。 FasterCSV は Ruby1.8 に標準添付されている CSV ライブラリの置き換えとして開発されました。 このライブラリはユーザの関心事を解決するためにデザインされています。 主なゴールが三つあります。

  1. ピュア Ruby のままで元の CSV ライブラリよりもかなり速くすること
  2. 小さくメンテナンスしやすいコードベースであること (FasterCSV はかなり大きく 機能豊かになりました。構文解析部分のコードはかなり小さいままです)
  3. CSV のインターフェイスを改善すること

明らかに最後のものは主観的です。変更するやむを得ない理由が無い限り、オリジナルの インターフェイスに従うようにしたので、おそらく旧 CSV ライブラリとはあまり 大きな違いは無いでしょう。

古い CSV ライブラリとの違い

大きな違いについて言及します。

CSV 構文解析

インターフェイス

CSV とは

CSV ライブラリは [RFC4180] から直接とられたかなり厳しい定義を維持します。 一ヶ所だけ定義を緩和することでこのライブラリを使いやすくしています。CSV は すべての有効な CSV ファイルをパースします。

不正な CSV データを与えたくない。あるフィールドが不正であることが確定す るのはファイルを全て読み込んだ後です。これは多くの時間やメモリを消費し ます。

Ruby の組込みメソッドはほとんど全ての点でより優れています。運が良ければ 不正な CSV データを与えても動きます。例えば、クオートされていないフィー ルドだけを持つ CSV データは次のように簡単にパースできます。

data.split(",")

クラス

class CSV

このクラスは CSV ファイルやデータに対する完全なインターフェイスを提供します。

class CSV::Row

CSV::Row は配列やハッシュのように似ています。

class CSV::Table

CSV::Table は CSV ドキュメントを表す二次元のデータ構造です。 行単位や列単位の操作を行うことが出来ます。また必要であれば CSV に 戻すこともできます。

class CSV::FieldInfo

行が読み込まれたデータソース内でのフィールドの位置の情報を格納するための 構造体です。

例外クラス

class CSV::MalformedCSVError

不正な CSV をパースしようとしたときに発生する例外です。

library csv