CSV ありますね。カンマ区切りのデータ形式。
なんか根強いファンがいて、どうしてもこの形式のファイルをダウンロードしたりアップロードしたりしたいという要望をよく聞きます。
CSV がほしい理由
これをやりたい理由のひとつとして、Microsoft Excel からエクスポートしたデータを読み込ませたいとか、逆にシステムにあるデータをエクセルで見たいとかいうのがあると思います。あると思いますっていうかほとんどそれじゃないかな。
けどこの場合、カンマ区切りである必要はないんですよね。要するにエクセルとやりとりできさえすればいいわけで。
だったらカンマじゃなくてタブですよタブ。
タブ区切り
カンマ区切りをやめてタブ区切りにすると、いろいろいいです。
- 何もエクスポートしなくても、エクセルの画面で「すべて選択」して「コピー」したら勝手にタブ区切りになってるからそのまま貼っつけるだけでいい。
- テキストエディタなどで開いたとき、データがタブで分かれてるからある程度ととのって見える。
- 区切り文字が制御記号だから、通常の文字との混乱が少ない。
3つめのやつなんてカンマ区切りだとめんどくさくて、例えばデータ内に ,
があるとその ,
がレコードの一部なのか区切り文字なのかわからないからレコード全体を ""
で括らないといけない。
さらに "
が入るとその "
を "
でエスケープするから ""
になるし、そのうえレコードが "
で始まってたりすると全体を括る "
とエスケープする "
で """
となってもう見づらいことこの上ない。
タブ区切りにしましょうタブ区切りに。
略称と拡張子について
CSV は comma-separated values
だから CSV なので、タブ区切りなら tab-separated values
で TSV ですよね。拡張子は .tsv
でいいですよね。
ところが、まあデータ形式としての TSV はともかくとして拡張子の .tsv
はなんかあまり相手にされてない感じがします。
ちょっと手元にエクセルがないから LibreOffice が入った環境の例ですけど、.tsv
のファイルを Mac で開こうとしても対応アプリケーションが出てこない。拡張子を .csv
に書きかえたらスプレッドシートが起動するんだけど。
それで開くと結局「区切り文字はなに?タブ?わかった。じゃあそれで開くね」とやってくれるのに、拡張子は .csv
しか扱ってくれない。
エクセルだとどうですか誰か。
解決した
ということで常々「タブ区切りは CSV じゃなくて TSV だろ」とボヤいてたんですけど、この問題が解決しました。
Comma-Separated Values – Wikipedia
タブ区切りされた tab-separated values (TSV)や、半角スペース区切りされた space-separated values (SSV) などがあり、これらをまとめて character-separated values (CSV)、delimiter-separated values とも呼ばれることも多い。
データのレコードを文字で区切る形式はまとめて character-separated values と表現できるのでした。CSV の C はカンマじゃなくてキャラクター。カンマだろうがタブだろうが区切りが文字ならなんでもいい。
ということで、今後 CSV
という文字列をみたら「キャラクターセパレーティッドバリューだな、このキャラクターがタブだといいな」と思うようにします。