🧹 CSV 清理器
粘贴 CSV / TSV,一键去重、排序、删除空行、清理空白、规范化表头、提取列、统一换行符。支持 RFC 4180 引号。
完全免费
无需注册
浏览器内完成
5 种语言
深色模式
🔒 关于隐私
- ・所有处理均在您的浏览器中完成
- ・CSV 数据绝不会发送到任何服务器
- ・无存储日志、无历史记录、无数据库
⚙️ 输入设置
🧹 清理选项
1 起列号或表头名,逗号分隔
仅输出指定列
📈 处理结果
原行数
0
输出行数
0
去重
0
空行
0
🔗 相关工具
📖 常见的坑
对你粘贴的 CSV / TSV 一次性执行去重、删空行、单元格 trim、表头 snake_case 化、列抽取、排序、换行符统一。能正确解析 RFC 4180 的引号规则(字段内的逗号、换行、双写引号)。处理全部在浏览器内完成,数据不会被传输。但这个工具是按文本处理的,并不知道值的「含义」——它判断不了 007 是邮编还是数字,也判断不了 2025/03/04 是 3 月 4 日还是 4 月 3 日。整形明明顺利通过、内容却悄悄坏掉,多半就发生在这条边界上。
| 情形 | 会发生什么 | 怎么处理 |
|---|---|---|
| 分隔符与引号判断错误 | 自动判定是按开头附近各字符的出现次数决定的,所以当某一列的正文里含有大量逗号时就会判错。尤其要留意欧洲区域设置导出的文件:在以逗号作小数点的地区,字段分隔符是分号——把它当逗号分隔来读,全部内容就挤成了一列。另一个麻烦是引号内的换行。RFC 4180 允许被引号包住的字段里含换行,因此「一行」与「一条记录」并不一致。只靠行数来核对,必然对不上。此外,用反斜杠转义的私有方言(部分数据库的导出)并不是 RFC 4180,所以无法被正确切分。 | 不要交给自动判定,请显式选择分隔符。然后用「列数」来核对——整形之后表头的列数与每一行的列数一致,就说明切分成功了。只有某一行列数不同,几乎必定意味着那一行的引号没有闭合(这是生成文件那一侧的 bug)。若是反斜杠方言,请在粘贴到这里之前,先用 csvkit 或电子表格转换成 RFC 4180 格式。而最该先做的一件事,是把转换前后的行数与列数记下来——「记录条数没有变化」这一项确认,哪怕靠肉眼也务必要做。 |
| 去重只看「作为字符串是否相同」 | 比较是字符串相等,因此在人看来完全一样的行会各自作为不同的行留下来:行尾带空格的行、全角与半角混用的行、大小写不同的行、03-1234-5678 与 0312345678、2025-01-05 与 2025/1/5。反过来,先做 trim,原本不同的行就变成了重复——也就是说处理顺序会改变最终的条数。同样重要的是两者中哪一条会留下:本工具保留先出现的行,丢弃后出现的行。把按更新时间排序的数据直接去重,留下的会是较旧的那一条。 |
请把顺序固定为「先规范化,再去重」。在本页就是先启用 trim,再执行去重。若混有全角半角或大小写差异,请先经 全角半角转换 与 大小写转换 处理后再回来。要控制留下哪一条,就先排序再去重——按更新时间降序排列,留下的就是较新的那条。另外请使用「去重判定列」:不做整行完全匹配,而只用 email、id 这类本来就该是键的列来判定,就不会被其他列的细微差异带偏。 |
| 干净的 CSV 一被 Excel 打开就坏了 | 这里输出的 CSV 即便是正确的,一旦双击让 Excel 打开,内容就会被改写。常见的有四种。开头的 0 消失(007 变成 7,殃及邮编、工号、电话号码)。被当成日期解释(1-2 变成日期;基因名 MARCH1 被识别为日期的问题,甚至促使学界为基因改名)。超过约 16 位的数字被舍入,于是卡号和部分 ID 的末尾变成了 0。以及没有 BOM 的 UTF-8 会乱码——本工具不会添加 BOM,因此在 Windows 版 Excel 中非 ASCII 文本会显示为乱码。不论哪一种,只要「再保存一次」,损坏就会固化进文件里。 |
请不要用双击打开。在 Excel 里请使用「数据 > 从文本/CSV」,并在导入前把有问题的列指定为「文本」。这是唯一可靠的路径。如果明知对方会用 Excel 打开,请导出带 BOM 的 UTF-8——简便做法是保存本页的输出后,在编辑器里选择「UTF-8(含 BOM)」重新保存一次。干脆不要用 CSV 传递 ID 与电话号码也是合理的判断,而且若对方使用 Excel,直接给 .xlsx 更安全——类型被保存在文件里,打开也不会被改写。 |
把表头 snake_case 化,是一次「丢弃原名」的操作。非拉丁文字的表头或含符号的表头转换之后无法还原——请只在写入数据库之前执行一次,并且务必保留原始文件。记下一份列对照表(原名 → 新名),日后才能追查「这一列究竟是什么」。换行符的选择因为看不见而最容易被忘记:要交给 Windows 工具就用 CRLF,要进 Unix 脚本或 Git 就用 LF。混着提交进 Git,差分就会变成整份文件的每一行(详见 换行符转换)。最后,由于是浏览器内处理,能处理的体积取决于本机内存。超过几十 MB 的 CSV,请不要用本页,改用 csvkit、xsv、duckdb 之类的命令行工具——它们能在不把整个文件读进内存的情况下处理。
📖 使用方法
-
1
粘贴 CSV / TSV将数据粘贴到左侧输入框。分隔符可自动检测或手动选择。
-
2
选择清理选项勾选去重、排序、删除空行、提取列等选项。键列可用 1 起列号或表头名。
-
3
复制或下载结果结果显示在右侧。使用复制或下载 (.csv / .tsv) 按钮导出。
❓ 常见问题
如何判断重复行?
默认比较所有单元格;指定键列时仅比较这些列。保留首次出现的行。
引号内的逗号和换行会被破坏吗?
不会。解析器符合 RFC 4180,引号内的逗号、换行、转义 ("") 都能正确处理。
能处理大文件吗?
所有处理都在浏览器内完成。数万行流畅运行;极大文件可能短暂卡顿。预览限于 100 行。
🐛 此工具出现问题了吗?
免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。
✅
感谢您的反馈!
已送达运营者,将用于改进工具。