何もしないとCSVだけど、TSVのほうがいいよねという話を言語化したものです。
TL;DR
- Excelなどの表データ書き出しでCSV(
Comma Separated Value
)を選択したくなったらTSV(Tab Separated Value
)のほうがおすすめ - データの性質によるが、文字列においては
,
よりもタブ文字が含まれることのほうが稀なため、TSVを選択すると悩みごとが一つ減る。
今回考えるもの
Excelやスプレッドシートなどで作られたデータをシステムにインポートするときに使われる形式として「CSVで書き出し」などがあるが、その選択肢として何がよいか整理するというのが今回のポイント。
今回扱うCSVとTSVの定義
CSV(Comma Separated Value)
文字通り、カンマで区切った値を指す。表の罫線に当たる部分をカンマで切り分ける形のデータ構造になっている。また、基本は1行を1つの独立したデータとして扱い、複数行つくることで表組みのようなデータの形式を提供する。
なお、こちらに関してはRFCで仕様が定義されている
RFC 4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Files
TSV(Tab Separated Value)
Tab文字(正規表現などだと \t
で表現されるもの)で区切った値を指す。前項のCSVと区切り文字が異なる以外はほぼ同じ概念となる。
TSVのほうが勝る点
一番大きいのは「実データにカンマが入ることはあるが、タブが入ることは稀」というところ。
数値だけを扱うデータの表の場合はそこまで考えるところは少ないが、データに文字列が入る場合にはデータの性質によってはカンマが入るためそれらを考慮してエスケープをかけるなどの必要性が出てくる。
また、TSVの場合はテキストエディタで開いた状態のものをコピペしてExcelなどの表計算ソフトに貼ると自動でセルごとに入れてくれるという特徴がある。
改行などがないデータを扱う場合はTSVをおすすめしたいです。