テーブルを出力するプログラムがあり、csv 形式と tsv 形式の間に利点/欠点があるかどうか疑問に思っていました。
5 に答える
TSV は、Javascript/Perl/Python が入力情報を失うことなく処理するのに非常に効率的であり、人間にとっても読みやすいものです。
この形式は、公開リリース以来 4store でサポートされており、かなり広く使用されています。
私の見方は、CSV はスプレッドシートにロードするためのものであり、TSV は特注のソフトウェアで処理するためのものです。
選択はアプリケーションによって異なります。簡単に言うと、フィールドにコンマが含まれていない場合は、CSV を使用してください。それ以外の場合は、TSV が最適です。
TL;DR
どちらの形式でも、デリミタがフィールド内に現れる可能性がある場合に問題が発生するため、デリミタがフィールド セパレータとしてではなく、フィールド内の値として機能していることを示す必要があります。
たとえば、CSV を使用する場合: Kalman, Rudolf
、von Neumann, John
、Gabor, Dennis
いくつかの基本的なアプローチは次のとおりです。
フィールド内に表示されるすべての区切り記号を削除します。
例
Kalman Rudolf
,von Neumann John
,Gabor Dennis
文字をエスケープします (通常、前にバックスラッシュを追加します
\
)。例
Kalman\, Rudolf
,von Neumann\, John
,Gabor\, Dennis
各フィールドを他の文字 (通常は二重引用符
"
) で囲みます。例
"Kalman, Rudolf"
,"von Neumann, John"
,"Gabor, Dennis"
CSV
フィールドはコンマで区切られます,
。
例えば:
Name,Score,Country
Peter,156,GB
Piero,89,IT
Pedro,31415,ES
利点:
- ほとんどのソフトウェアパッケージは設定をいじらずに読むことができるため、技術者以外の人と共有する場合は、より一般的で便利です。
短所:
- フィールド内のコンマをエスケープすることは、誰もが基準に従っているわけではないため、イライラすることがあります。
- 余分なエスケープ文字と引用符はすべて、最終的なファイル サイズに重みを加えます。
TSV
フィールドは表<TAB>
または\t
例えば:
Name<TAB>Score<TAB>Country
Peter<TAB>156<TAB>GB
Piero<TAB>89<TAB>IT
Pedro<TAB>31415<TAB>ES
利点:
- フィールド内にタブ文字があるのは通常ではないため、区切り文字をエスケープする必要はありません。それ以外の場合は、削除する必要があります。
短所:
- あまり普及していません。
一般的にcsvはtsv形式よりもサポートされることが多いと思います。