删除重复行怎么用:为什么有的没被去掉
从表格或聊天记录复制来的名单,同一行常常出现好几次。去重只保留第一次出现的位置,其余删掉,行的内容本身不改。
什么场景真的需要它
合并几份名单时最需要。三份表格各有一列邮箱或电话,拼起来后重复很多;去重之后才能知道真实人数。关键词、标签、URL 列表、产品编号也是同样的用法,去完再排一次序,漏网的近似项更容易看出来。
另一类场景是清理导出数据。系统导出的日志里同一事件反复出现,或者聊天记录里同一句话被多次转发,去重后剩下的才是独立条目。做统计前先看一眼重复量,也能判断数据质量。
- 合并多份名单后清重
- 关键词、标签、URL 列表去重
- 清理导出数据里的重复记录
怎么做不出错
比较以整行为单位,逐字符进行,区分大小写。行首或行尾多一个空格、中间用了全角空格、标点不同,都会被当成另一行。所以「看起来一样」却没被删掉,通常就是差在这些看不见的地方。
保留的是第一次出现的那一行,后面完全相同的才删除。因此原始顺序不能乱:去重前如果先排序,留下的会是排序后的第一条。建议顺序是先去行首尾空格、再去重,必要时最后排序。空行也遵守同一规则,多个空行只会剩下一个。
- 先去行首尾空格,再去重
- 保留第一次出现的位置
- 空行也只会保留一个
替代方案与不该用的地方
需要忽略大小写去重,先统一转小写再处理,但要注意这样会改变原始值。近似重复(Acme 与 Acme Inc.、带区号的电话、大小写不同的邮箱)本工具不会合并,需要模糊匹配或脚本。
数据量大或在表格里时,用 Excel 的删除重复项、数据库的 DISTINCT,或命令行的 sort 加 uniq 更合适。去重前务必留一份原始数据,因为删掉的行不会提示你删了什么。
常见问题
为什么看起来一样的行没有被删掉?
因为比较是逐字符的:行首或行尾多一个空格、用了全角空格或不同的标点,都会被视为另一行。先执行去除行首尾空格,再去重就能解决大部分情况。
重复行会保留哪一条?
保留第一次出现的那一条,后面的才删除,所以原始顺序会影响结果。如果先排序再去重,留下来的就是排序后的第一条,而不是原文件里的第一条。
能忽略大小写去重吗?
本工具区分大小写,React 和 react 会被当作两行。需要忽略大小写时,先全部转成小写再去重,但这样也会改变原始写法,建议留一份备份。
相关工具:删除重复行