【てぃーえすぶいふぁいる】

TSVファイル とは?

最終更新:
💡 タブで列を分ける、テキストの表データ

タブ文字で項目を区切るテキストのデータ形式。行と列からなるデータを交換するのに使い、読み書きする側で文字コードやヘッダー、引用符の扱いを合わせる。

📌 このページのポイント
タブを区切りとして、列へ読み込むテキストの中身読み込んだ表名前TAB年齢田中TAB28佐藤TAB35名前年齢田中28佐藤35TABは見える文字列ではなく、タブ文字カンマを含む同じ名前の例CSV:"田中,太郎",28TSV:田中,太郎[TAB]28
TABや[TAB]は区切り位置を見せるための記号です。実ファイルではタブ文字を使います。引用符を扱うCSVならカンマを値に含められます。ヘッダーや文字コード、引用符の規則は受け渡し側で合わせます。
ひよこ ひよこ
TSVってCSVとどう違うの?
ペンギン先生 ペンギン先生
基本の区切り文字が違うよ。CSVはカンマ、TSVはタブ文字で列を分ける。タブは空白に見えることがあるけど、スペースとは別の文字だよ。プログラムではタブ文字を表す書き方として「\t」を使うことがあるんだ。
ひよこ ひよこ
カンマが入る文章はTSVの方がいい?
ペンギン先生 ペンギン先生
TSVではカンマを区切りにしないので、そのまま値に入れられるよ。ただしCSVでも、対応する読み書きの規則に従って引用符で囲めばカンマを含む値を扱える。カンマがあるだけでCSVが壊れるわけではないんだ。
ひよこ ひよこ
タブや改行が値に入ったら?
ペンギン先生 ペンギン先生
単純にタブと改行で分けると、列や行が増えたように読まれてしまうよ。IANAの登録仕様では値の中のタブは認めず、1行を1レコードにしている。一方、ツールによっては引用符で囲むタブ区切り形式も扱うので、双方の規則を確認しよう。勝手にスペースへ置換すると元の値が変わるんだ。
ひよこ ひよこ
Pythonで読み込むには?
ペンギン先生 ペンギン先生
csvモジュールで、ファイルを「newline=''」と、実際の文字コードに合う「encoding」で開き、「csv.reader(f, delimiter='\t')」のように区切りを指定できるよ。このreaderは既定で引用符も解釈するので、出力側の規則と合わせてね。ヘッダーがあるなら、その行をデータとして扱うかも決めるんだ。
ひよこ ひよこ
テキストなら、表の見た目も保存される?
ペンギン先生 ペンギン先生
主に値を行と列として交換する形式で、表計算ソフトの色や数式の仕組みをそのまま保存する形式ではないよ。読み込む側で列やデータ型をどう扱うか確認しよう。IANAの仕様には先頭の見出し行があるけれど、実際の出力ではヘッダーを省くものもあるので、受け渡しの条件を合わせることが大切だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「TSVファイル」って出てきたら「タブ文字で項目を区切るテキストの表データ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Tab-Separated Values」 = タブ区切り値
💬 Tabは区切りに使うタブ文字、Separatedは区切られた、Valuesは値という意味だよ。

参考資料

← 用語集にもどる