繁體中文

資料與電子表格 · CSV 更清理

製表符分隔值與 CSV:為什麼存在 TSV 以及何時使用它

· 背景

csv tsv 資料格式

遵循單獨解析器路徑的一個自由文字表的逗號和製表符分隔版本
原始 ToolAcre 向量圖

製表符很少出現在資料內部,這正是 TSV 存在的原因。這篇文章解釋了製表符分隔檔案的起源,它們如何迴避 CSV 的參考問題,以及它們仍然存在不足。

充滿逗號和引號的自由文字不斷破壞 CSV 匯出 - 這種情況使分頁具有吸引力

自由文字註解通常包含逗號,因此逗號分隔的輸出需要在這些儲存格周圍加上引號。分頁在該特定資料集中出現的頻率可能較低,這可以使 TSV 檔案在視覺上更安靜。它並沒有消除對解析器或有關嵌入分頁和換行符的協議的需要。

ToolAcre 將製表符視為四個分隔符號之一。無論選擇哪個分隔符,都會執行相同的參考欄位狀態機。這意味著該決策改變了一個結構特徵,而不是每個尷尬值的安全模型。

TSV 的來源 — 製表符的打字機起源及其在資料庫轉儲和科學資料中的早期使用

工作簿要求從打字機到資料庫轉儲的歷史記錄,但這些宣告不存在於產品配置、實作或測試中。此模組省略了時間順序,並重點關注讀者可以使用附帶的解析器重現的行為。

當選擇作為分隔符號時,來源文字中的製表符對於狀態機而言只是 ` `。外部引號結束一個欄位;在引號內它仍然是該欄位的一部分。這個規則足以比較格式,而無需發明起源故事。

打字機的起源和早期資料庫歷史不屬於儲存庫證據

TSV 可以減少引用。該大綱稱大多數 TSV 方言根本不需要引用; ToolAcre 的序列化器更加精確。它引用包含所選分隔符號、引號、LF、CR 或周圍空格的任何欄位。

因此,包含真實製表符的註解必須在製表符輸出下加引號,且文字引號在該欄位內加倍。自由文字也可以包含換行符,並保留引用。選擇不常見的分隔符號可以減少資料集中的衝突;它永遠不會使碰撞規則消失。

ToolAcre 仍套用 RFC 樣式引用

分頁在視覺上不明確,因為編輯器可以將它們呈現為可變寬度空間。透過將製表符轉換為空格的軟體進行複製可能會破壞分隔符,同時使檔案可讀。在宣告一列結果格式錯誤之前,檢查不可見字元或依賴解析器預覽。

ToolAcre 將偵測到的分頁寫回帶有標籤的選擇中並顯示列數,從而使不可見的選擇可見。如果檔案實際上是空格對齊的文字而不是 TSV,製表符偵測將不會建立列。手動選擇無法製造不存在的分隔符號。

轉義約定 — 某些 TSV 方言中的反斜線序列與 CSV 中的 RFC 樣式引用

有些表格方言使用反斜線序列作為製表符或換行符號。 ToolAcre 沒有。它的解析器可以識別每個選取分隔符號下的 RFC 樣式雙雙引號和帶引號的欄位。反斜線是普通的單元格文字,不會轉義下一個字元。

在載入為不同方言配置的匯出時,這種不匹配可能會留下雜散斜線或過早的邊界。首先確定生產者的逃逸規則。安全轉換需要解析原始方言,而不是在不知道它們是否是文字的情況下替換斜杠字母對。

不支援反斜線 TSV 方言; ToolAcre 對每個選定的分隔符號使用雙引號

取得標題 id、註解和兩個值:一個註解顯示 `red, small`,而另一個註解包含一個真實的分頁。在逗號輸出中,第一個註解被引用,製表符可能保持不被引用,因為它不是分隔符號。在製表符輸出中,逗號是普通的,但製表符值被引用。

使用符合的分隔符號解析每個輸出,兩個表恢復相同的字串。此練習表明,這兩種格式都無法普遍避免特殊處理。所選分隔符號僅更改除了引號和記錄結尾之外觸發引號的字元。

這不包括什麼 - 固定寬度格式和二進位表格格式

固定寬度和二進位表格格式不在路由範圍內。它不會從視覺對齊中推斷列或解碼柱狀容器。輸入必須是文字 CSV、TSV 或使用逗號、分號、製表符或垂直線的純文字,或支援相反方向的 JSON。

此路線也不提供自訂轉義字元。如果科學或資料庫工作流程定義了自己的 TSV 語法,請在將規範化文字引入此處之前使用為該語法配置的解析器。擴展不足以證明方言相容性。

選擇資料和使用者的分隔符號 — ToolAcre CSV Cleaner 的分隔符號修復如何為您所提供的系統產生一致的分隔檔案

根據資料和消費者選擇一個分隔符,然後明確說明。 ToolAcre 可以從矩形十行樣本中偵測製表符和逗號,或接受手動覆蓋。它不會檢查語義內容並決定註釋是否值得使用製表符。

解析後,解決行警告並使用相同或另一個受支援的分隔符號進行序列化。標準雙引號處理可防止衝突。結果是一致的,因為分隔符號是已知的,而不是因為 TSV 或 CSV 本質上不受資料中標點符號的影響。