数据和电子表格 · CSV 清理器
制表符分隔值与 CSV:为什么存在 TSV 以及何时使用它
· 背景
csv tsv 数据格式
制表符很少出现在数据内部,这正是 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 本质上不受数据中标点符号的影响。