工具
指南

CSV 工具箱

格式化

解析、对齐和预览 CSV/TSV,支持自定义分隔符与引号;可在 CSV 与 JSON 之间双向转换,并按列排序、去重——由 papaparse 驱动。

100% 客户端 无后端

不获取远程 URL;请直接粘贴你的 JSON。

输入
输出
在左侧粘贴 CSV,再选择一种模式。

欧洲通常使用 ; 作为 CSV 分隔符。

本页内容

什么是 CSV 工具箱?#

CSV 是表格数据里“最大公约数”的格式——每个电子表格、每个数据库导入向导、每个分析工具都能读它,但它们在细节上几乎没有共识。分隔符是逗号还是分号?第一行是不是表头?值用 " 还是 ' 包?一个在某工具里打开完美无缺的文件,到了另一个工具就可能乱码,纯粹是因为默认值不同。CSV 工具箱存在的意义,就是把这些选择变成显式的,并把文件重塑成你需要的形状。

本页基于 papaparse 做四件事。**Align(对齐)**把文件解析后,每个单元格按所在列的最宽值补齐,输出一份等宽、列对齐的网格——可以直接贴进代码评审、README 或 bug 报告里,那种“一行错位立刻跳出来”的版式。**Preview(预览)**解析后直接在页面里渲染成表格,让你在做任何事之前先肉眼过一遍。CSV → JSON 把行变成 JSON 数组(有表头时是对象数组、无表头时是数组的数组)。JSON → CSV 反过来,吃一个 JSON 数组、吐 CSV。在这些之上,你还能按任意列排序、对整行去重、切换分隔符(逗号、分号、tab、或自定义单字符)、选择引号字符——正是这些旋钮决定了你的文件能不能挺过流水线里的下一个工具。

怎么用#

  1. 把 CSV(或者 JSON → CSV 模式下的 JSON)粘进左侧 Input 框。占位符展示了期望的形状;Sample 加载一份小数据集。
  2. 选一个 Mode 按钮:AlignPreviewJSON。选 JSON 时会多出一组方向按钮——CSV → JSONJSON → CSV
  3. 在工具栏设置结构选项:
    • Delimiter(分隔符) —— 逗号、分号、tab、或自定义(选自定义时会出现一个单字符输入框,默认 |)。
    • Quote(引号) —— 双引号(")或单引号(')。
    • First row is header(首行是表头) —— 第 1 行是列名时勾上;纯数据网格不勾。表头模式同时决定解析方式和 JSON 输出形状。
  4. 可选的数据整理:选一个 Sort(排序) 列(从你的表头里生成;无表头时用数字索引),选升序或降序 Order,再勾 Dedup(去重) 去掉完全重复的行。
  5. 在右侧 Output 框(或 Preview 模式下的预览网格)查看。输出栏会显示大小和行数;Copy 复制;Clear 清空两边。

如果某一行字段数不对、或者输入格式有毛病,状态栏会报出行号,让你去修源头而不是瞎猜。

主要特性#

  • 列对齐输出。 Align 模式把每个单元格补齐到所在列的最长值,于是原本一墙逗号的 CSV 突然就排齐了——对于发现“某行少了个字段”特别好用。
  • JSON 双向。 CSV → JSON 产出对象数组(有表头)或数组的数组(无表头)。JSON → CSV 接受这两种形状的任意一种回来。
  • 感知分隔符。 在逗号、分号(在小数点用逗号的欧洲地区很常见)、tab(TSV)、或自定义字符之间切换。工具栏下方那条提示会提醒你“为什么会有分号”。
  • 排序与去重。 两个值都像数字时按数值排序,否则按字典序。去重删的是整行完全相同的重复(表头行永远保留)。
  • 安全的预览。 预览网格用安全的 DOM API 构建——只用 textContent,绝不把你的数据塞进 innerHTML——所以哪怕 CSV 里塞满 <script> 标签,也只会渲染成无害的文本。
  • 完全在浏览器端,对超过 1 MB 的输入走 Web Worker。

实例演示#

一份粘进来的小名册,带一行重复、带表头:

输入:

name,role,city
Ada,Engineer,London
Lin,Designer,Taipei
Ada,Engineer,London
Sam,Manager,Berlin

第三行和 Ada 完全一样。分隔符选 Comma、表头开、点 Align,再勾 Dedup

name role     city
Ada  Engineer London
Lin  Designer Taipei
Sam  Manager  Berlin

每列都补到了最宽的值,三行对齐排开,重复的 Ada 没了——状态栏会提示删掉了一行。现在把模式切到 JSON(CSV → JSON),选项不变:

[
  { "name": "Ada", "role": "Engineer", "city": "London" },
  { "name": "Lin", "role": "Designer", "city": "Taipei" },
  { "name": "Sam", "role": "Manager", "city": "Berlin" }
]

表头行变成了对象的键,剩下的每行数据变成了一个对象。按 role 排序会按字典序重排这些行;按数字列排序则按数值排。

常见问题#

什么时候该用分号而不是逗号?#

当数据里的值本身就含逗号、而且你处在一个把逗号当小数点的地区(欧洲大部分、拉美大部分)时——3,14 在那里是一个数,不是两个字段。Excel 在这些地区默认就用分号导出 CSV。如果一个文件打开后所有东西都挤在 A 列,几乎都是分隔符选错了——切成分号再对齐一次。

Dedup 到底在比什么?#

它在表头被分离出去之后,比较的是整行是否完全相等。只有每个字段、逐格都相同,两行才算重复。表头行永远不会被当作重复、永远保留。部分相同(名字相同、城市不同)不算重复。

CSV → JSON 怎么决定用对象还是数组?#

如果勾了 First row is header,每行数据会变成一个对象,键就是表头名。如果不勾,每行变成一个字符串数组,预览里才标成 Col 1Col 2——JSON 输出是纯数组的数组。第 1 行真的是列名时勾表头;纯数字网格就别勾。

我的数据会被上传吗?#

不会。解析和反解析都通过打包进本页的 papaparse 在浏览器里跑。超过 1 MB 的文件会放到 Web Worker 里处理,UI 保持响应,但数据绝不离开你的设备。