資料與電子表格 · CSV 更清理
分号分隔 CSV 解釋:十进制逗号和区域設置
· 背景
csv 分隔符 互通性
在欧洲大部分地区,逗号是小數点分隔符,因此“逗号分隔”檔案使用分号代替。這篇文章解釋了分割背後的區域設定邏輯、電子表格如何決定以及檔案跨越邊界時會發生什麼。
來自國外同事的檔案以單列形式開啟 - 大多數人發現 CSV 有方言的那一刻
在僅逗號假設下開啟的分號匯出顯示為寬文字列。此症狀反映了解析器的選擇,而不是資料已損壞的證據。 ToolAcre 提供分號以及逗號、製表符和垂直線,並將其實際使用的字元寫回控制項中。
第一個回應應該是結構性的:檢查原始分隔符號並預覽。不要盲目替換每個分號,因為引用的文字可能包含標點符號,並在不解析的情況下更改位元組可能會改變值。方言感知讀取可區分分隔符號和單元格內容。
十進位逗號 — 為什麼 '1,5' 在許多語言環境中是有效數字,以及為什麼逗號分隔符號會使其無法解析
本工作簿透過小數點逗號解釋分號。這是有用的交換上下文,但此實作永遠不會將 `1,5` 解析為本地化數字。它將單元格保留為字串。因此,值內的逗號意義和欄位之間的分號意義在解析時保持分離。
修復分隔符號時不要轉換小數點,除非目標模式明確要求它。程式碼或散文欄位可以合法地包含逗號。 ToolAcre 處理表邊界並將數值解釋留給接收應用程式。
小數逗號上下文是合理的,但 ToolAcre 將單元格值視為字串並不解析本地化數字
此工具不會參考作業系統的區域或清單分隔符號設定。自動偵測會解析每個支援的候選項下的十行樣本,測量最大寬度並獎勵產生一致矩形的候選項。如果沒有人創建至少兩列,則返回逗號。
這種檔案驅動的方法可以跨位置重現。它仍然可以對異常或單列資料進行糟糕的選擇,這就是手動選擇器存在的原因。此控制項反映偵測到的值,並更改它重新解析原始文字,丟棄已應用的清理步驟。
ToolAcre 偵測檔案形狀;它不會讀取作業系統清單分隔符號設定
在錯誤的分隔符號下,分號記錄保留為一個儲存格,而不是變成幾列。 ToolAcre 不會解釋本地化數字,因此它無法在解析過程中默默地將 `1,5` 更改為另一個數值。失敗在列數和預覽形狀中可見。
反向不匹配可以將不帶引號的逗號拆分為額外的單元格並觸發不規則行警告。引用的逗號在狀態機下仍然受到保護。閱讀警告並比較預期的標題寬度,而不是假設合理的第一行證明所有後續記錄都是對齊的。
解析器顯示結構讀數,而不是靜默的數位變化
使用 `item;price;note`,後面跟著 `A;1,5;"small, red"` 和 `B;2,0;plain`。分號解析產生三列,保留兩個有逗號的字串。逗號解析會在欄位內留下分號,並可能在逗號周圍創建誤導性的分割。
偵測器應該傾向於分號,因為該候選分號會產生一致的三列形狀,而逗號則不會。此範例證明了解析器行為,但沒有宣告 1,5 具有任何數值。接收系統必須應用其自己記錄的十進制約定。
工作範例:使用逗號字串值進行分號偵測
當發送者和接收者名稱分隔符號、編碼、標頭策略和值約定時,跨境交換會得到改善。 「CSV」本身並不能解決其中任何一個問題。包括一個小裝置,並在發送生產匯出之前透過精確的接收解析器對其進行驗證。
如果需要逗號輸出,請在分號來源正確解析後選擇逗號進行序列化。然後,包含小數點逗號的欄位將自動引用,並將它們保留為儲存格文字。語法轉換不轉換十進位表示法或貨幣格式。
這不包括什麼-轉換資料內的數字格式;分隔符號和小數點是單獨的問題
數字格式轉換不屬於 ToolAcre 的分隔符號修復範圍。它不會將逗號轉換為小數點、識別千位分隔符號或轉換金額。這是有意的字串保留,而不是不完整的數字推斷。目標模式擁有該轉換。
此路由也不能保證電子表格應用程式在開啟檔案時如何選擇分隔符號。它只能產生在其輸出中選擇的分隔符號以及衝突字元周圍的標準參考。測試目標應用程式而不是發明供應商行為。
分隔符號遵循區域設置,而不是檔案 - ToolAcre CSV Cleaner 的分隔符號修復如何為您提供一個帶有已知分隔符號的檔案
在此工具中,分隔符號遵循解析的檔案形狀或手動選擇,而不是區域設定。這種更正很重要,因為不同辦公室的兩名分析師在加載相同文字時應該看到相同的檢測到的原始字元。環境不會重寫解析器的候選清單。
確認控制、檢查行寬度並匯出已知消費者。分號既不是斷開的逗號 CSV 也不是十進位逗號資料的自動證明。它是一種受支援的結構分隔符,ToolAcre 將分隔符之間的每個值視為文字。