从网页复制的名单怎么清理?零宽字符与全角
一、三类脏数据,来源不同
| 问题 | 现象 | 常见来源 |
|---|---|---|
| 零宽字符 | 看着一样的两行,「去重」却没去掉 | 网页排版、复制粘贴、导出软件 |
| 全角/半角混排 | 名单里 ABC 和 ABC 并存,排序对不上 | 中文输入法、旧系统导出 |
| 重复行 | 同一人出现多次,只差空格 | 多次复制、合并多个表 |
这三类问题的处理顺序有讲究,先做哪一步结果不同。
二、第 1 步:先删零宽字符
零宽字符是宽度为 0 的 Unicode 字符,肉眼完全看不见。以「张[ZWSP]三[LRM]李[ZWSP]四[ZWSP]」为例(方括号里就是那几个看不见的字符):实际有 8 个字符,其中 4 个是零宽字符(3 个 ZWSP 加 1 个 LRM),清理后只剩「张三李四」4 个字符——一半是看不见的。
常见的零宽字符有近 20 种,工程里常遇到的是:
| 名称 | 码位 | 来源 |
|---|---|---|
| ZWSP 零宽空格 | U+200B | 网页换行处最常见 |
| ZWNJ / ZWJ | U+200C / U+200D | 排版连接控制 |
| LRM / RLM | U+200E / U+200F | 双向文本方向标记 |
| BOM | U+FEFF | 文件头,粘到文本里就藏起来了 |
为什么它最该先删:零宽字符夹在两个字符中间时,张三 和 张[ZWSP]三 在屏幕上看起来完全一样,去重、VLOOKUP、匹配全都会失败——这类问题排查起来最费时间,先清掉能省掉后面一大半麻烦。
工具会标出每个零宽字符的位置(第几行、第几列、属于哪种),清理前后各给一份文本,方便你先确认再粘贴回去。
三、第 2 步:统一全角与半角
全角字符占两个字符宽,主要在中文输入法下产生。转换规则按类型区分:
- 字母数字:
ABC123→ABC123(6 个全角字符全部转换) - 部分标点:
,。!转成半角时,逗号和感叹号会转换,中文句号「。」保留——它是中文标点,不属于需要转的半角对应字符
所以工具报的转换数量不总是等于字符总数(6 个字符里转了 5 个),这是正常的。
什么时候需要转:Excel 里做匹配、写代码处理数据、按字母排序时;什么时候不用转:纯中文姓名(姓名用全角本就正常)、文章正文。
顺带一提:全角数字虽然显示正常,但在 Excel 里会被当成文本,参与计算会出错——这是「公式算不出结果」的常见原因之一。
四、第 3 步:去重
去重有两种口径,选错会出问题:
| 选项 | 效果 |
|---|---|
| 保持原序去重 | 删除重复项,保留首次出现位置,顺序不变 |
| 忽略大小写去重 | Apple、apple、APPLE 视为同一个 |
实测:张三 / 李四 / 张三 / 王五 / lisi / 李四 6 行,原序去重后剩 4 行(删除 2 行);而 苹果 / 苹果 / Apple / apple / 苹果 5 行,勾选忽略大小写后剩 2 行(Apple 与 apple 视作同一条)。
注意:忽略大小写只影响英文字母。中文没有大小写概念,张三 和 张三 是两个不同的人名(虽然罕见),工具不会合并。
五、第 4 步:排序(按需)
排序方式有原序、升序、降序、按长度、按数值。踩坑最多的是数字排序:2、10、1 按文本排会得到 1, 10, 2,按数值排才是 1, 2, 10。名单里有编号列时,务必选数值排序。
中英文混合时按 Unicode 顺序排列,中文会排在英文之后——要做严格的中文排序(拼音序)得用专门的拼音排序工具。
六、单次上限与隐私
单次上限 20 万字符,几千行的名单、关键词列表都够用。所有处理都在浏览器本地完成,名单不上传服务器——处理客户名单、手机号时这点比较重要。
七、直接算
→ 文本去重与排序:保持原序去重、忽略大小写、五种排序方式
→ 全角半角转换:字母数字与标点分别转换,方向可选
→ 零宽字符清理:标出每个不可见字符的位置再清理
→ 文本处理工具:去空行、批量替换、大小写转换等批量操作
本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。