CSV 去重
CSV 去重,是指在 CSV 表格里按指定的一列或几列判断重复、删除重复行、只保留一条的操作,常用于客户名单按手机号去重、报名表去掉重复提交。本工具支持单列、多列或整行判重,可保留第一次或最后一次出现的记录,默认忽略首尾空格,按原文比较不会把长身份证号误判为相同,被删掉的行可单独导出核对。全程在浏览器本地完成,文件不上传。
🔒 CSV 在你的浏览器内去重,未上传任何服务器;工具只读你的原文件,不会修改它。
如何使用CSV 去重
选择 CSV 文件或粘贴表格:拖入一个 .csv / .tsv / .txt(单个 ≤100MB),或切到「粘贴表格」直接粘贴从 Excel、WPS 复制的单元格。
确认编码与分隔符:文件卡片会写出识别到的编码、分隔符、列数和数据行数;识别不对就手动切到 GBK/GB18030、UTF-16 或换分隔符,没有表头的取消「首行为表头」。
勾选按哪几列判断重复:默认全选,即整行完全相同才算重复;只勾「手机号」就是手机号相同即算重复;勾「姓名 + 学号」就是两列都相同才算重复。下方会用一句话写出当前规则。
选择保留哪一条:保留第一条、保留最后一条(以最新提交为准),或只留不重复的(重复的行一条都不留);需要时展开「更多判重选项」忽略大小写、全部空格或全半角。
点「开始去重」:在独立线程里两遍扫描,可随时取消;完成后显示原多少行、保留多少行、删除多少行,以及重复最多的前 20 组。
下载去重结果:点「下载去重结果」得到 UTF-8 BOM 的 CSV,Excel 双击不乱码;有删除时还可以「下载被删除的重复行」逐条核对。
关于CSV 去重的常见问题
- CSV 怎么按某一列去重,比如按手机号
- 载入文件后,在「按哪几列判断重复」里先点「全不选」,再只勾「手机号」那一列,点「开始去重」即可。手机号相同的行只保留第一次出现的那条,其它列(姓名、地址等)跟着整行一起保留或删除,不会被拆开。列名旁边会显示前几个样例值,方便确认勾对了列。
- CSV 多列都相同才算重复,怎么设置
- 同时勾选这几列就行,例如勾「姓名」和「学号」:只有姓名和学号都一样的两行才算重复,同名不同学号的两个人会被都保留。全部勾选(默认)就是整行完全相同才算重复。勾选的先后顺序不影响结果。
- CSV 去重能保留最后一条重复数据吗
- 能。把「保留哪一条」切到「保留最后一条」,每组重复只留最后一次出现的那行,适合报名表、问卷这类以最新一次提交为准的场景。保留下来的行仍在它原来的位置,整份结果的先后顺序与原文件一致,不会被重新排序。
- Excel 去重为什么会误删 CSV 身份证号
- CSV 用 Excel 打开时,18 位身份证号会被当成数字,而 Excel 只保留 15 位有效数字,后三位变成 0。于是 110101199001011234 和 110101199001011235 这两个不同的号码都显示成 110101199001011000,再点「删除重复值」就会把其中一个人删掉。本工具按 CSV 原文逐字比较,不做任何数字转换,不会出现这种误删。
- CSV 去重前能先看看哪些行重复了吗
- 可以从三个地方核对:结果区列出重复最多的前 20 组和每组出现次数;「下载被删除的重复行」单独导出所有被删的行;在「输出设置」里勾选「追加重复次数列」,结果表末尾会多一列写明每行原本重复了几次。想先只看不删,可以把这三样下载下来再决定用不用去重结果。
- CSV 去重时手机号为空的行会被删掉吗
- 默认不会。判重列全部为空的行不参与去重、全部原样保留,结果区会写明有多少行因此被保留;否则几百个没填手机号的客户会被合并成一行。如果你确实想把空值也当成一个值去重,在「更多判重选项」里勾选「空值也算重复」。多列判重时只要有一列不为空,就按正常规则比较。
- CSV 去重后用 Excel 打开中文乱码怎么办
- 本工具输出统一是 UTF-8,并默认带 BOM,Excel、WPS 双击打开中文不会乱码。源文件是 GBK(记事本里叫 ANSI)也没关系,读入时自动识别并转成 UTF-8 再输出。如果文件卡片上提示疑似乱码,说明编码没认对,手动切到 GBK/GB18030 或 UTF-16 后重新去重。
- xlsx 表格能直接用 CSV 去重工具处理吗
- 不能直接处理 .xlsx/.xls。请先用「Excel 转 CSV」把要去重的工作表转成 CSV,再拖进本页去重;去重完需要 Excel 格式,再用「CSV 转 Excel」转回去。转换和去重都在浏览器本地完成。
- 两个 CSV 文件之间能互相去重吗
- 暂不支持「A 表减去 B 表」这种跨文件比对。如果目的是把两份导出合在一起后去掉重复,可以先用「CSV 合并」把它们合成一个文件,再在本页按需要的列去重。模糊匹配(相似度去重)和数值归一(把 1.0 和 1 当成相同)目前也不支持。
- CSV 去重工具手机上能用吗
- 能。用手机浏览器打开本页,点选择文件从手机的「文件」里挑 CSV,也可以把复制的表格内容粘贴进来,去重同样在手机本地完成。手机内存比电脑小,几十 MB 的大文件建议换电脑处理;在微信里打开时下载结果可能被拦截,可点右上角改用系统浏览器打开再下载。
- CSV 去重会把文件上传到服务器吗
- 不会上传。文件读进浏览器内存后,在你本机的独立线程(Web Worker)里解码、解析、判重和生成结果,不经过任何服务器,关掉页面即清空。本地只记住保留策略、判重选项、输出分隔符这类参数偏好,不记文件名、文件内容和粘贴的内容。
- 超过 104 万行的大 CSV 文件能去重吗
- 能。Excel 一张工作表最多 1,048,576 行,超出的部分打开时就被丢掉了,在 Excel 里去重本身就不完整。本工具不经过 Excel,按单个文件 100MB 的上限处理,不设行数上限;去重在独立线程里进行,页面不会卡住,处理中可随时取消。
CSV 去重和 Excel 删除重复值有什么区别
为什么不直接用 Excel 的「删除重复值」?「数据 → 删除重复值」对普通表格够用,但 CSV 是纯文本,用 Excel 打开的那一刻就已经被「翻译」过一遍:长数字被截断、前导 0 被去掉,判重比的已经不是原来的内容了。下面是 CSV 去重最常见的几个坑。
| 问题 | Excel 打开 CSV 后删除重复值 | 本工具按原文去重 |
|---|---|---|
| 18 位身份证号、银行卡号 | 只保留 15 位有效数字,110101199001011234 与 110101199001011235 都变成 110101199001011000,被当成重复误删 | 按原文逐字比较,两个号码不相同、都保留 |
| 编号 001 与 1 | 001 被转成数字 1,两行被判为重复 | 001 与 1 是不同的文本,都保留 |
| 首尾多一个空格 | 「张三」与「张三 」被当成两个值,删不干净 | 默认忽略首尾空格判重,输出仍是原值 |
| 字段内换行(多行地址、备注) | sort -u、记事本按物理行去重会把一条记录劈成几行 | 按解析后的完整记录判重 |
| 超过 1,048,576 行 | 超出部分打开时就被丢掉 | 不受 Excel 行数限制,单个文件 ≤100MB |
| GBK 编码 | 双击打开常见乱码 | 自动识别 GBK,导出 UTF-8 BOM 不乱码 |
上表的身份证号是虚构的示例号码,只用来说明 15 位有效数字的截断效果。Excel 里避免这类身份证号去重被误删的办法,是导入时把该列设为「文本」,而本工具从头到尾都只当文本处理,不需要额外设置。
CSV 去重时怎样才算重复
先由勾选的判重列决定「比哪几列」,再由下面几个开关决定「怎样算相同」。这些开关只影响比较,导出的内容永远是原文:例如忽略首尾空格时「张三 」与「张三」算重复,但保留下来的那一行仍然写着「张三 」。
| 开关(默认) | 例子 | 关闭时 | 开启时 |
|---|---|---|---|
| 忽略首尾空格(开) | 「张三」与「张三 」 | 不重复 | 重复 |
| 忽略大小写(关) | Abc@x.com 与 abc@X.com | 不重复 | 重复 |
| 忽略全部空格(关) | 「张 三」与「张三」(含全角空格) | 不重复 | 重复 |
| 全角半角视为相同(关) | 全角「ABC123」与「ABC123」 | 不重复 | 重复 |
| 空值也算重复(关) | 300 行手机号为空 | 全部保留,不参与去重 | 视为一组,只留 1 行 |
| ——(不提供) | 1.0 与 1、001 与 1 | 不重复 | 不提供数值归一 |
CSV 去重保留第一条、最后一条还是只留不重复的
「保留第一条」适合客户名单、订单导出这类以最早一条为准的去重;「保留最后一条」适合报名表、问卷的重复提交,以最新一次为准;「只留不重复的」会把所有出现过两次以上的行全部删掉,常用于找出只出现一次的记录。无论选哪种,结果都按原文件顺序输出,「原行数 = 保留行数 + 删除行数」始终成立,结果区的统计条就是这三个数。要做 csv 重复次数统计,就在「输出设置」里勾选追加「重复次数」列。
CSV 去重的几种叫法和英文说法
| 叫法 | 在本页怎么做 |
|---|---|
| CSV 去重 / CSV 文件去重 / 在线 CSV 去重 | 载入文件,默认整行判重 |
| CSV 按列去重 / CSV 按某一列去重 | 只勾那一列 |
| CSV 多列去重 | 同时勾选几列,都相同才算重复 |
| CSV 删除重复行 / CSV 去除重复数据 / CSV 重复数据删除 | 开始去重后下载去重结果 |
| 表格按手机号去重 / 名单按手机号去重 | 只勾手机号列,空号码默认保留 |
| CSV 保留最后一条重复 | 保留哪一条 → 保留最后一条 |
| 找出 CSV 重复行 | 下载被删除的重复行,或看重复最多的前 20 组 |
| 大 CSV 文件去重 | 单个文件 ≤100MB,不受 Excel 104 万行限制 |
| CSV 去重不乱码 | 输出 UTF-8 并带 BOM(默认) |
| TSV 去重 | 自动识别制表符,输出 .tsv |
| Remove duplicates CSV online / CSV dedupe | 英文界面工具的叫法,同本页 |
英文语境下这类工具通常叫 CSV dedupe 或 remove duplicates CSV online,搜这两个词找到的都是同一件事。写代码的人更熟悉 Python pandas 的 drop_duplicates:参数 subset 对应本页勾选的判重列,keep='first' / 'last' / False 依次对应「保留第一条」「保留最后一条」「只留不重复的」。两边有两处口径不同:pandas 的 read_csv 默认会把 001 读成数字 1,要传 dtype=str 才按原文比较;它还会把空值当成彼此相同,几百行空手机号会被合并成一行,而本页默认让空值行原样保留。