删除重复行
从列表中删除重复行,支持排序、去除首尾空白、忽略大小写和删除空行等选项。适合清理邮件列表、日志文件、关键词列表和 CSV 列。
- 文件永不离开你的设备
- 免费,无需注册
- 无水印
- 加载后可离线使用
如何删除重复行
- 1
粘贴你的列表
每行一项——邮件地址、URL、关键词,什么都可以。
- 2
选择你的选项
排序、去除首尾空白、忽略大小写,或者只保留出现超过一次的行。
- 3
复制结果
结果会显示被删除的行数,让你清楚知道发生了什么变化。
为什么"保留第一次出现"是明智的默认选择
当一份列表包含同一行的多份副本时,必须有某种规则来决定哪一份留下来,而保留第一份正是最能保留原始列表信息的选择:幸存内容的顺序依然反映着列表最初是如何组建的,而不是被去重这一步本身打乱。这一点对于原本就有意义顺序的列表来说很实际——比如按时间顺序添加的条目,或者已经被某个外部流程排好序的列表——在不打乱这种顺序的前提下去重,能让结果保持和原始列表一样的可用性,只是少了重复项而已。
之后再开启排序是一个独立的、刻意的步骤,因为它会舍弃原始顺序、改用字母顺序——当原始顺序本身没有值得保留的意义时,这是正确的选择(比如一份从多个来源杂乱导出的数据);而当原始顺序确实有意义时,这就是错误的选择。
"忽略大小写"改变了什么,又没有改变什么
"忽略大小写"只改变两行内容在判断是否为重复项时的比较方式——在这个设置下,Apple、APPLE 和 apple 会被当作同一个条目,列表里最先出现的那一个会存活下来,并完整保留它自己原本的大小写。这是一个仅影响比较方式的设置,而不是一个统一格式的设置:这个工具永远不会把幸存那一行的大小写改写成某种标准形式,它只是决定哪些行在查找重复项时应该算作等价。
这一点对于从多个来源汇总、大小写不一致的列表尤其重要——比如通过不同表单提交的邮件地址,或者由不同的人输入的产品名称——如果没有这个设置,"John@Example.com" 和 "john@example.com" 会被当作两个不同的条目,两个都会存活下来,从根本上违背了去重的目的。
查找重复项而不是删除它们
把操作反转过来,只显示出现过不止一次的行,能把这个工具从一个清理工具变成一个审查工具——当目标不是得到一份干净的列表,而是想知道"这份列表里到底有没有重复项,分别是哪些"时,这一点很有用。在调查数据质量问题时,这是更实用的模式:一份怀疑存在重复注册的客户名单,一份可能由多个重叠来源拼凑而成的关键词列表,一份日志文件里反复出现的某一行可能意味着一个真实的错误被反复记录、而不是只记录了一次。
在比较之前先去除首尾空白
两行看起来完全一样的内容,如果其中一行带有肉眼看不见的尾随空格或多余的制表符,依然可能无法被判定为重复项——这是从电子表格或表格里复制数据时的常见结果,单元格的内边距有时会被当作字面意义上的空白字符带过来。在比较之前先去除每一行的首尾空白,正好能消除这一类"假性不重复"的情况,捕捉到那些人类审阅者会立刻认定是相同内容、但严格逐字符比较却不会认定为相同的条目。
常见问题
保留的是哪一个重复项?
第一次出现的那个,所以剩余内容的原始顺序会被保留下来。如果同时开启了排序,幸存的行之后会按字母顺序重新排列。
"忽略大小写"具体做了什么?
它会把 Apple、APPLE 和 apple 当作同一行处理,并保留最先出现的那一个,同时保持它原本的大小写不变。它改变的是什么算作重复,而不是输出内容怎么写。
可以只查找重复项而不删除它们吗?
可以。"只显示重复项"会反转操作,只列出出现过不止一次的行——适合用来审查列表,而不是清理列表。
有大小限制吗?
实际上限大约是几十万行。全部处理都在你的浏览器里完成,所以限制来自你的设备内存,而不是某个上传上限——而且你的数据永远不会离开这个标签页,这对客户名单这类数据尤其重要。