数据和电子表格 · 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 将分隔符之间的每个值视为文本。