日本語

データとスプレッドシート · CSV クリーナー

タブ区切り値と CSV: TSV が存在する理由とそれをいつ使用するか

· 背景

csv tsv データ形式

個別のパーサー パスに従う 1 つのフリーテキスト テーブルのカンマ区切りバージョンとタブ区切りバージョン
オリジナル ToolAcre ベクトル イラスト

タブがデータ内に現れることはほとんどありません。これがまさに TSV が存在する理由です。この投稿では、タブ区切りファイルの起源、タブ区切りファイルが CSV の引用の問題を回避する方法、およびまだ不十分な点について説明します。

CSV エクスポートを破壊し続けるカンマと引用符でいっぱいのフリー テキスト — タブを魅力的なものにしたケース

フリーテキストのメモにはカンマが含まれることが多いため、カンマ区切りの出力ではそれらのセルを引用符で囲む必要があります。その特定のデータセットではタブが出現する頻度が低くなり、TSV ファイルが視覚的に静かになる可能性があります。パーサーの必要性や、埋め込みタブと改行に関する合意が不要になるわけではありません。

ToolAcre はタブを 4 つの区切り文字の 1 つとして扱います。どのセパレータが選択されているかに関係なく、同じ引用フィールド ステート マシンが実行されます。これは、この決定により、すべての厄介な値の安全モデルが変更されるのではなく、1 つの構造的特徴が変更されることを意味します。

TSV の由来 — タブ文字のタイプライターの起源と、データベース ダンプや科学データにおける初期の使用

ワークブックはタイプライターからデータベース ダンプまでの履歴を要求しますが、これらの要求は製品の構成、実装、またはテストには存在しません。このモジュールでは、その年表を省略し、読者が付属のパーサーで再現できる動作に焦点を当てます。

ソース テキスト内のタブは、区切り文字として選択されると、ステート マシンに対して単に ` ` になります。引用符の外側ではフィールドが終了します。引用符内ではフィールドの一部のままになります。このルールは、元のストーリーを考え出さずにフォーマットを比較するのに十分です。

タイプライターの起源と初期のデータベース履歴はリポジトリの証拠の外にあります

TSV は、値にカンマが含まれていても、タブ、引用符、またはレコード末尾が含まれていない場合、引用符を減らすことができます。概要では、ほとんどの TSV 方言は引用符をまったく必要としないと述べています。 ToolAcre のシリアライザーはより正確です。選択した区切り文字、引用符、LF、CR、または周囲の空白を含むフィールドを引用符で囲みます。

したがって、実際のタブを含むメモはタブ出力の下で引用符で囲む必要があり、リテラルの引用符はそのフィールド内で二重にされます。フリーテキストには改行を含めることもできますが、改行は引用符のままになります。一般的ではない区切り文字を選択すると、データセット内の衝突が減少します。衝突ルールが消えることはありません。

ToolAcre は、タブ区切りデータにタブ、引用符、または改行が含まれている場合でも、RFC スタイルの引用符を適用します。

タブは、エディターが可変幅スペースとしてレンダリングできるため、視覚的に曖昧です。タブをスペースに変換するソフトウェアを使用してコピーすると、ファイルは人が読める状態のままでセパレータが破壊される可能性があります。 1 列の結果が不正であると宣言する前に、非表示の文字を検査するか、パーサーのプレビューに頼ってください。

ToolAcre は、検出されたタブをラベル付き選択に書き込み、列数を表示して、非表示の選択肢を表示します。ファイルが実際に TSV ではなくスペースで揃えられたテキストである場合、タブ検出では列は作成されません。手動選択では、セパレータが存在しない場合は製造できません。

エスケープ規則 — 一部の TSV 方言のバックスラッシュ シーケンスと CSV の RFC スタイルの引用符

一部の表形式の方言では、タブまたは改行にバックスラッシュ シーケンスを使用します。 ToolAcre はそうではありません。そのパーサーは、RFC スタイルの二重二重引用符と、選択されたすべての区切り文字の下にある引用符で囲まれたフィールドを認識します。バックスラッシュは通常のセル テキストであり、次の文字をエスケープしません。

この不一致により、別の方言用に構成されたエクスポートをロードするときに、迷走したスラッシュや時期尚早な境界が残る可能性があります。まずプロデューサーのエスケープ ルールを特定します。安全に変換するには、元の方言を解析する必要があり、リテラルかどうかを知らずにスラッシュ文字のペアを置き換えるのではありません。

バックスラッシュ TSV 方言はサポートされていません。 ToolAcre は、選択されたすべての区切り文字に二重引用符を使用します

ヘッダー ID、メモ、および 2 つの値を取得します。1 つのメモには `red, small` と表示され、もう 1 つは実際のタブが含まれます。カンマ出力では、最初の音符が引用符で囲まれますが、タブは区切り文字ではないため、引用符で囲まれないままになる場合があります。タブ出力では、カンマは通常ですが、タブを含む値は引用符で囲まれます。

一致する区切り文字を使用して各出力を解析すると、両方のテーブルで同じ文字列が回復されます。この演習では、どちらの形式も特殊な処理を普遍的に回避していることがわかります。選択した区切り文字は、引用符とレコード末尾に加えて引用をトリガーする文字を変更するだけです。

これでカバーされないもの — 固定幅形式とバイナリ表形式

固定幅およびバイナリの表形式はルートの外にあります。視覚的な配置から列を推測したり、列状のコンテナをデコードしたりすることはありません。入力は、テキストの CSV、TSV、またはカンマ、セミコロン、タブ、パイプを使用したプレーン テキスト、または逆方向でサポートされている JSON である必要があります。

ルートにはカスタム エスケープ文字も提供されていません。科学ワークフローまたはデータベース ワークフローが独自の TSV 文法を定義している場合は、正規化されたテキストをここに取り込む前に、その文法用に構成されたパーサーを使用します。拡張子は方言の互換性を示す十分な証拠ではありません。

データとコンシューマの区切り文字を選択します。ToolAcre CSV Cleaner の区切り文字修復が、供給しているシステムに一貫して区切り文字で区切られたファイルを生成する方法

データとコンシューマの両方に応じて区切り文字を選択し、明示的に指定します。 ToolAcre は、長方形の 10 行サンプルからタブとカンマを検出したり、手動オーバーライドを受け入れたりできます。意味論的な内容を調べて、メモがタブに値するかどうかを判断することはありません。

解析後、行警告を解決し、同じまたは別のサポートされている区切り文字を使用してシリアル化します。標準の二重引用符処理により衝突が保護されます。結果が一貫しているのは、TSV または CSV が本質的にデータ内の句読点の影響を受けないためではなく、区切り文字がわかっているためです。