數據和電子表格 · CSV Cleaner
CSV 分隔符號偵測的工作原理:逗號、分號、製表符和垂直線
· 工作原理
數據集 資料清理 文件格式
CSV 檔案從不說明哪個字元分隔其字段,因此軟體必須猜測。這篇文章解釋了分隔符號嗅探的工作原理,為什麼它在棘手的文件上失敗,以及如何使分隔符號明確。
作為一長列開啟的檔案 - 為什麼分隔符號沒有儲存在 CSV 中的任何位置
資料分析師開啟 .csv 匯出,並在每一行上看到一個長欄位。副檔名不會告訴讀者使用了哪個分隔符,而且檔案通常不包含分隔符聲明。假設逗號的應用程式會將分號分隔的標題(例如名稱;城市;註釋)作為單列讀取。在變更值之前,請詢問哪個字元實際分割欄位以及匯入器是否有辦法覆寫其猜測。
支援的四種候選字元:逗號、分號、製表符和豎線
ToolAcre 將逗號、分號、製表符和豎線視為候選字元。當逗號已用作小數點分隔符號、製表符避免簡單匯出中的標點符號衝突以及管道有時分隔日誌或資料庫轉儲時,分號很常見。空格不屬於該工具的自動選擇:名稱和自由文字單元格通常包含空格。不要僅僅因為候選文字中頻繁出現就添加它;分隔符號必須將行劃分為一致的欄位。
嗅探的工作原理-計算每行的候選字元數,並優先選擇能夠提供跨行一致欄位計數的字元
此實作剝離了前導 UTF-8 byte-順序標記,並解析每個候選最多十行的樣本。它記錄這些行的寬度並拒絕任何永遠不會產生至少兩列的候選者。當候選者在行中一致地產生更多列時,得分較高;寬度不一致會在分數中扣兩次分。至關重要的是,解析會觀察帶引號的字段,因此帶引號的地址內的逗號不算作字段邊界。這與簡單的字元計數不同,這就是為什麼凌亂的地址列不需要失敗檢測。
嗅探失敗的地方 - 充滿逗號的自由文字列、單列檔案和隱藏真正分隔符的引號字段
沒有任何猜測是絕對正確的。非常短的文件幾乎沒有證據,真正的單列 CSV 沒有可以分成兩部分的候選,格式錯誤的引用可能會使多個候選解析看起來不完整。當引用被破壞時,填充分隔符號的自由文字列可能會與真正的分隔符號競爭。跨行的混合分隔符號並不是一種乾淨的 CSV 方言。該工具報告解析警告並公開手動分隔符選擇;了解上游匯出約定的使用者可以覆蓋推斷的選擇,而不是假裝啟發式是規範。
工作示例 - 分号分隔的导出,地址内有逗号,显示了为什么天真的计数选择了错误的字符
試試使用標題 name;city;note 和一行 Ada;Paris;「10 點在車站附近開會」的小範例。計算原始逗號可能會錯誤地偏向逗號,因為註釋包含標點符號,尤其是在幾個這樣的行上。分號解析器在兩行上傳回三個欄位;逗號解析器不提供相同的矩形結構。在修剪、重複資料刪除或匯出之前,確認預覽將名稱、城市和註釋顯示為單獨的欄位。如果一個來源行有未閉合的引用,請檢查該行,而不是默默地丟棄它以提高分數。
選擇輸出分隔符號 - 將分隔符號與接下來要讀取檔案的程式和區域設定相符
輸入分隔符號和輸出分隔符號是不同的決定。您可以匯入歐洲分號文件,但為需要逗號的程式匯出 RFC 樣式的逗號分隔文字。正確的編寫器會引用包含輸出分隔符號、嵌入引號或換行符的欄位。下載前確定您的收件者是否需要 UTF-8 BOM;一些電子表格應用程式使用一種編碼來識別編碼,而許多解析器希望檔案沒有它。檢查目標程式中下載的標頭,而不僅僅是瀏覽器預覽。
這不包括什麼 - 在行之間混合分隔符的文件,以及根本不使用分隔符的固定寬度導出
偵測無法修復中途更改分隔符號的文件,也無法推斷固定寬度匯出中不存在分隔符號的列。它不知道帶引號的逗號是否是街道地址的一部分或資料輸入錯誤:它遵循語法,而不是含義。 CSV Cleaner 將顯示參差不齊的行並保留其值,而不是猜測如何刪除客戶的資料。在執行不可逆的清理步驟之前,使用其預覽和警告來診斷來源系統問題。
明確分隔符號而不是希望 — ToolAcre CSV Cleaner 的分隔符號修復如何產生具有一致分隔符號的文件
分隔符號猜測是對幾行的基於證據的解析,而不是寫入 CSV 檔案內的承諾。 CSV Cleaner 在您的瀏覽器本地實現它,讓您選擇不同的分隔符號並編寫一致的輸出方言。如果導入精靈下週猜測不同,請在文件旁邊記錄輸出約定,以便下一個讀者不必重新發現它。