CSVの正しい書式を知ろう
データを取り扱う際に使われるCSVファイルの正しい書式をご存知でしょうか?元々CSVとは「Comma-Separated Values」の略称で、カンマ(コンマ)で区切って並べた値という意味を持っているわけです。2005年に公開された「RFC4180」におけるCSVの書式の定義については下記の通りです。
- 1行あたり1レコード、行は改行コード(CRLF)で分けたものとする。
- ファイルの最終レコードの末尾は改行があってもなくてもいい。
- ファイルの最初の行をヘッダーにしてもいい。ヘッダーはフィールド名を記す役割で、通常のレコードと同じ数のフィールドを持つ。
- フィールドをカンマで区切る。ファイルの各行に同じ数のフィールドがある。フィールド内にスペースが含まれている場合は無視しない。レコードの最終フィールドの後ろにカンマを付けなくてもいい。
- 各フィールドはダブルクォーテーションで囲われることがある。フィールドがダブルクォーテーションで囲われてイない場合はダブルクォーテーションが含まれないものとする。
- 改行、ダブルクォーテーション、カンマを含むフィールドはダブルクォーテーションで囲う。
- フィールドをダブルクォーテーションで囲う場合は、ダブルクォーテーションの前にダブルクォーテーションを付け足すこと。
書式に関しては下記の例のように、ダブルクォーテーションで囲んだ各データをカンマで区切ったものになります。
- "姓","名","生年月日","郵便番号","住所","電話番号"
CSVのフォーマットの仕様
ファイルフォーマットの仕様
- ファイル:テキスト形式です。
- 文字コード:日本ではShift_JISを用います。
- ヘッダー:最初の1行がデータではなく各カラムのタイトルになっている場合はヘッダーと呼びますが、ヘッダーはあってもなくても構いません。
- 区切り文字:区切り文字は「,(カンマ)」を使用するのが基本となっていますが、「<TAB>(タブ)」で区切ることもあります。タブで区切る場合は「TSV(Tab-Separated Values)」と呼びます。TSVはデータ内に<TAB>を含まないことが前提なので、<TAB>を含む場合は削除か置換を行う必要があります。
- 改行コード:プラットフォームごとに異なり、Windowsでは「<CR>、<LF>」を用います。
- ダブルクォーテーション:CSVでは、値をダブルクォーテーション(ダブルクォート)で囲みます。ダブルクォーテーションを使わない場合は値の中に「”(ダブルクォーテーション)、,(カンマ)、改行(<CR>・<LF>)」といった制御文字を含まないのが前提条件となります。これらの制御文字が値に含まれる場合は、値をダブルクォーテーションで囲み、値内のダブルクォーテーションは二重化(””)する必要があります。また、「¥」でエスケープを行うこともありますが広く普及はしていないので知識として覚えておけばOKです。
CSVのファイルフォーマットの仕様は上記の通りとなります。CSV形式には様々なパターンがありますが、「区切り文字はカンマを使用する・ダブルクォーテーションで囲み、値内にあるダブルクォーテーションは二重化する・ヘッダー行は付けない(例外として、データをExcelで使用する場合はヘッダーを付ける)」 というのが一般的なCSVの形式となります。またデータ交換を行う場合は文字コード・改行コード・ヘッダー行の有無・区切り文字・ダブルクォーテーションで囲むかどうか・ダブルクォーテーションで囲まない値の制御文字を決めておきましょう。