Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 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 ファイルをパースします。

What you don't want to do is feed CSV invalid data. Because of the way the CSV format works, it's common for a parser to need to read until the end of the file to be sure a field is invalid. This eats a lot of time and memory.

Luckily, when working with invalid CSV, Ruby's built-in methods will almost always be superior in every way. For example, parsing non-quoted fields is as easy as:

data.split(",")

クラスとモジュール

class CSV

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

class CSV::FieldInfo

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

class CSV::Row

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

class CSV::Table

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

例外クラス

class CSV::MalformedCSVError

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