CSV(Comma-Separated Values)形式の最低限の定義

ファイルの中身がカンマで区切って「値,値,値」の形なっているテキストファイルは、だいたい「CSVファイル」って言われる。

EW-SYS.INFO

 コンピュータシステムにおいて、CSV形式のファイルでデータの受け渡しをすることは、もはや標準装備の仕様と言っても過言ではないんじゃないかな。

 「CSV」は「Comma-Separated Values」の頭文字の略語で、「カンマで区切られた値群」ということである。

問題になってくるのは、書き方。

 「カンマ」で区切られていれば、ほぼCSV形式なのだが、値の方は、どう表記する?例えば、1,000円とか1,000個などのように、人の見易さのために、3桁ごとの桁区切りのカンマがある値を、CSV形式で使いたい時は?そのまま書いたら・・・「輪ゴム,1,000個,1,000円」という形になってしまいます。これだと・・・

輪ゴム1000個1000円
輪ゴム,1,000個,1,000円のCSV

 おおっと!これでは本来の意味をなさなくなってしまいます。

 できれば、次のようになって欲しい。と思うはず。

輪ゴム1,000個1,000円

 問題は、値の中に「カンマ」が入る場合である。逃げ道としては、テキストタブ区切りという「カンマ」ではなく「TAB」コードで値を区切るファイル形式にしてしまうこと。これも有効なアタマのイイひとつの手だと思うのですが、やっぱりCSV形式で解決したい。

 こういう場合は、値を「ダブルクォーテーション」で囲ってあげるのです。”値”という感じに。例題は「輪ゴム,”1,000個”,”1,000円”」となります。

値の中に「ダブルクォーテーション」がある時は?

 あーもう!システム開発の道は、次から次へと問題が出てきて、それを解決する・・・線路は続くよどこまでも。野を越え、山越えたあたりで終わって欲しい。

 値に「輪ゴム”10cm”」とか書きたくなったら、「輪ゴム(10cm)」じゃダメなんですかねっ!?「ダブルクォーテーション」じゃなくていいよねっ!?

 最近は、会社名や店名に、奇をてらって「なんて読むの?」みたいな表記が増えましたよね。そもそも読めない店名って意味あるのかな・・・?という訳で、「ダブルクォーテーション」を値に使わなければならない場合は、「ダブルクォーテーション」を重ねるのです。「”輪ゴム””10cm”””,”1,000個”,”1,000円”」となります。

わたし的CSV形式ルール

 どっかの誰かがCSV形式のルールを定義しているけど、あいまいに普及している感じだから、わたしはこういうルールにしているってだけ。

  • 値の間をカンマで区切る。
  • 同じ列の値の型は同じにする。たとえば1行目:文字列,数値,数値、2行目:文字列,文字列,数値というようにしない。
  • 1行の最後は改行コードで終わる。
  • 値が文字列の場合は「ダブルクォーテーション」で括る。
  • 値の文字列中に「ダブルクォーテーション」がある場合は「ダブルクォーテーション」をひとつ付与する。
  • 値が数値の場合は、3桁ごとの桁区切りのカンマを省く。
  • 値が文字列か数値か不明な場合は文字列として扱う。
  • 日付、時刻の表記は「YYYY/MM/DD HH:MM:SS」の形式を基本とする。日付のみの場合は「YYYY/MM/DD」もアリ。
  • 出力、または入力するCSV形式のテキストファイルは、基本的に文字コードは「Shift-JIS」を使う。しかし、システムの仕様により「UTF-8」もアリ。

 完全なローカルルールでっせ!

 それでも、このルールでMicrosoft Excelなどの表計算ソフトで、ほぼほぼ問題なく読み込めるCSV形式のテキストファイルができあがる。

scroll page top ▲