两份名单合并之后去重,结果发现保留下来的那条记录信息不全——原来同一个联系人,在一份名单里只有姓名,在另一份名单里有姓名和电话,去重后留下的是只有姓名的那一条。这说明去重不只是「删掉重复」,还要决定「留下哪一份」。
保留首次出现是默认选择
大多数去重工具的行为是保留第一次出现的那一份。
这个策略的逻辑很直观:第一份数据通常是最早录入的、最原始的,或者是优先级最高的来源。按出现顺序保留,等于隐式地给数据源排了优先级——先出现的优先。
具体到实现层面,保留首次出现意味着:输出的内容、大小写、前后空白都沿用第一次出现的那条记录。
忽略大小写时保留什么
如果勾选了「忽略大小写」,比较时会先把内容统一转成小写再判断,但输出的是原文。
所以输入 Apple 和 apple,比较时视为同一条,输出时保留先出现的 Apple(保持它原来的大写形式)。
这个设计符合大多数场景的直觉。如果输出的是统一转成小写的版本,用户会发现自己原来的数据被改写了,这通常不是期望的行为。
需要留意的是,忽略大小写只影响比较,不影响输出。如果希望输出也统一大小写,需要在去重后再做一次格式转换。
全角半角不会被视为相同
一个容易被忽略的细节是:全角字符和半角字符是不同的字符。
全角空格( )和半角空格( )是不同的字符,全角逗号和半角逗号也不同。所以 苹果,香蕉 和 苹果,香蕉 在按行比较时会被视为两行不同的内容,即使它们在视觉上很像。
如果数据来自不同来源,混合了全角和半角,去重之前需要先统一。做法是用查找替换把全角标点换成半角(或反过来),再去重。
同理,中文数字和阿拉伯数字、繁体和简体,在精确匹配下都是不同的。工具不做模糊匹配,只有完全相同的字符串才会被判定为重复。
前后空白的影响
从网页或表格复制数据时,经常会带上首尾空白。这些空白在视觉上看不见,但会影响比较结果。
所以去重工具通常提供「忽略首尾空白」的选项。勾选后,苹果 和 苹果 会被视为同一条。
这个选项在处理从多个来源汇总的数据时几乎必须开启,因为不同来源的格式处理方式不同,很容易引入首尾空白差异。
去重之后要不要排序
保留首次出现的顺序,输出的就是原序。但原序不一定是最好用的顺序。
如果目的是核对数据,按拼音或字母升序排列会更方便——相同的项会挨在一起,肉眼扫描时容易发现遗漏。
如果目的是分析,按出现次数降序排列更有价值——高频项排在前面,一眼就能看出哪些内容重复最严重。
三种排序各有用途,选择取决于去重之后要做什么。工具通常提供「保持原序」「升序」「按次数」三个选项。
一个务实的处理流程
面对「两份来源不同的名单合并后去重」这类任务,建议按这个顺序处理。
先统一格式。把全角半角、大小写、首尾空白统一一遍,避免因为格式差异导致去重不彻底。
再去重。勾选忽略大小写与忽略首尾空白,保留首次出现。
然后检查。用「只看重复项」功能看看哪些项重复了、各重复几次,确认没有因为格式问题漏掉重复。
最后排序。按需要选择原序、升序或按次数。
这套流程的价值在于把「格式统一」和「去重」分成两步。如果混在一起做,去重时出现异常就很难判断是格式问题还是匹配问题。
检查清单
- 默认策略是保留首次出现,等于给数据源隐式排了优先级
- 忽略大小写只影响比较,输出仍保持原文的大小写
- 全角与半角是不同的字符,去重前应先统一格式
- 首尾空白会影响比较,从多处汇总的数据建议勾选忽略
- 去重后可按原序、升序或出现次数排序,取决于后续用途
- 把格式统一和去重分成两步,便于定位问题