打开或粘贴 CSV 文件,清洗结果会显示在选项旁边。默认情况下,工具会去除每个值的首尾空格、删除空行,并删除所有列都相同的重复行(保留第一行)。还可以按需开启更多步骤,例如清空 NULL 和 N/A、删除不可见字符,或按邮箱列去重;结果上方的提示会统计修改了什么。表头行永远不会被改动。文件在你的浏览器中处理,不会上传。
如何清洗 CSV 文件
- 打开
.csv、.tsv或.txt文件,拖到工具上,或粘贴数据。分隔符以及 UTF-8、UTF-16 的字节顺序标记(BOM)会自动识别;如需其他分隔符或旧编码(如 GBK 文件选 GB18030),请在 导入设置 中选择。 - 在 单元格值 下选择要对单元格做的修正。用 应用到列 可以只处理部分列;一列都不选就是处理所有列。
- 在 行和列 下选择如何处理空行、重复项和空列。
- 查看结果上方的提示,并与 输入 标签页对照,然后点击 下载 CSV、复制 或 在编辑器中打开。
各步骤的作用及执行顺序
每个值都会按下面的固定顺序经过已开启的步骤,所以无论你以什么顺序勾选选项,结果都一样。
| Unicode 规范化(NFC) | 让作为一个字符输入的 é 与 e 加组合重音符输入的写法变成相同的文本,从而能正确匹配和去重。默认关闭。 |
|---|---|
| 删除不可见字符 | 删除控制字符、零宽空格和零宽连接符、单词连接符,以及混入的字节顺序标记(BOM)。制表符和换行会保留。默认关闭;如果数据中有 emoji 组合序列,或使用依赖零宽连接符的文字,请保持关闭。 |
| 视为空值的内容 | 用逗号分隔的列表,例如 NULL, N/A, -。值(忽略两侧空格后)与其中任一项相同时,会被清空。匹配区分大小写,如果 null 和 NULL 都出现,需要分别列出。默认为空。 |
| 去除首尾空格 | 删除开头和结尾的空白,包括两端的不换行空格和换行。默认开启。 |
| 合并值内的连续空格 | 把两个或更多连续的空格、制表符、不换行空格或全角空格合并为一个空格。不处理换行。默认关闭。 |
| 大小写 | 保持不变、转为小写、转为大写 或 单词首字母大写。单词首字母大写会先把整个值转为小写,再把空格、连字符、斜杠或左括号后的第一个字母大写,所以 MCDONALD 会变成 Mcdonald,o'neil 会变成 O'neil。 |
| 值内的换行 | 保留,或选择 替换为空格,把每个换行及其两侧的空格替换为一个空格。 |
处理完值之后,再处理行和列:删除空行 会删除所有单元格都为空或只有空格的行;重复项 比较的是清洗后的值;删除完全为空的列 最后执行。删除行和列时始终检查所有列,不受 应用到列 的限制。
删除重复行
- 默认选项是 删除所有列都相同的行。经过上面的单元格步骤之后,各值必须完全相同才算重复。
- 删除所选列值相同的行 只要所选关键列相同就视为重复,例如
email,或first_name+last_name+zip。其他列可以不同。 - 保留 决定留下哪一行:首次出现的行,或 最后出现的行(保留在最后那一行原来的位置)。
- 比较时忽略大小写和首尾空格 会把
ANA@example.com和ana@example.com视为同一个键。这个选项不会改动被保留行的文本。 - 选择 保留所有行 即可关闭去重。
按关键列去重之前,如果希望保留某一特定行(例如最新的一行),请先用 CSV 排序 把它排到前面。
哪些内容永远不会改动
- 表头行保持原样;除了删除空列之外,列的顺序不会变化。如果所有列都是空的,则一列也不删除。
- 值不会被转换:除了你开启的步骤,
00731、1e5和03/04/2024都按原文本保留。 - 值内被引号括起的分隔符和换行按 RFC 4180 读取,写回时也加上引号(除非你选择替换换行)。
- 空白表头会写成
Column 3,重复表头写成name (2)。比表头短的行会用空值补齐。 - 下载的文件保留原有的分隔符、换行符和末尾换行;编码为 UTF-8(带或不带 BOM)、UTF-16 LE 或 Windows-1252 时也保持原编码,其他编码(包括 GB18030)会保存为 UTF-8。
常见问题排查
- 想保留的行不见了。 去重默认是开启的。请在 重复项 下选择 保留所有行,或关闭 删除空行。
- 看起来一样的重复行没有被删掉。 它们在大小写、值内空格、重音的两种输入方式或不可见字符上有差别。请开启 比较时忽略大小写和首尾空格、合并值内的连续空格、Unicode 规范化(NFC) 或 删除不可见字符。
- 首字母大写把姓名或编码弄乱了。 用 应用到列 限定范围,例如只处理姓名列,这样邮箱和商品编码就能保持原来的大小写。
- 小写的 n/a 没有被清空。 这个列表区分大小写;请在
N/A旁边再加上n/a。
限制与隐私
文件最大 25 MB、10 万行、250 列和 200 万个单元格。更大的文件请先用 拆分 CSV 拆开;注意这样只能在每一份内部找出重复行。
清洗在你的浏览器中进行,CSV 文件不会上传到服务器。
示例
清洗一份联系人列表:使用默认的去除首尾空格和删除空行,另外开启 合并值内的连续空格,把 视为空值的内容 设为 N/A, NULL,并按 email 列去重、开启 比较时忽略大小写和首尾空格。提示显示修改了 5 个值,删除了 1 个空行和 1 个重复行。第二条 Ana 记录作为重复行被删除;第一条保留它自己的写法。
name,email,city " ana lopez ",ANA@example.com,Madrid Ana Lopez,ana@example.com ,Madrid Kim Lee,kim@example.com,N/A ,, Bao Nguyen,bao@example.com,NULL
name,email,city ana lopez,ANA@example.com,Madrid Kim Lee,kim@example.com, Bao Nguyen,bao@example.com,
常见问题
怎样按某一列去重?
把 重复项 设为 删除所选列值相同的行,勾选这一列,再在 保留 下选择 首次出现的行 或 最后出现的行。
能在这里查找和替换文本吗?
不能。这个工具只执行固定的清洗步骤。要在所选单元格中查找和替换,请使用 CSV 编辑器。
清洗会改动数字或日期吗?
不会。所有值都按文本处理:工具不会重新格式化数字、日期或前导零。只有你开启的步骤才会修改值。