数据比对的陷阱-不一样的的空格


在做数据分析的过程中, 进行比对查找是经常需要做的一件事,比如我们会用到EXCEL的函数vlookup, match, if...,但有一种空格陷阱你可能需要注意:

请观察这两个字符,他们是一样的, 是么? 你可以复制下来尝试

John Yan
John Yan

但是你复制到EXCEL中你会发现, 他们不一样, 如下图

为什么?

因为他们真的不一样, 中间的空格, 一个是普通的空格, 另外一个是"不间断空格"

这种不间断空格是用来防止行尾单词间断的空格, 其实是很常见的, 但会为我们做数据分析带来困惑, 而且它是不会被trim(去除左右空格的公式)的, 所以当你发现无法trim两端的空格, 它可能就是不间断空格

在word中使用" Ctrl+Shift+Space”组合键 可以输入不间断空格

另外在网页中也存在很多的"不简断空格", 你常见的 ,就会被解析成空格了, 所以叫作:"Non-breaking space", 所以如果你从网页上复制数据也需要了解存在的这种问题

从原理上来看, 比较字符, 需要看它他们的ASCII码, 你可以从转化工具中看到,普通空格的ASCII码是32(0x20), 而不间断空格的ASCII码是160(0xA0), 所以它们不是一样的.

另外网页开发的录入端也可能会有这种问题,我们来看看浏览器是怎么产生unicode值为0xA0的空格的。经过分析与测试发现,无论是移动端浏览器还是PC浏览器,用户在input或者textarea敲空格键输入的‘空格字符’都是unicode值为0x20的空格。但是如果设置某节点.innerHTML=' ',再通过这个节点.innerText获取其内容,将会取到unicode值为0xA0的空格

另外还有一种就是"全脚空格"的问题, 我们一般使用的都是半脚空格,也会出现查找问题, 还好全脚空格看起来会比半角空格宽一点, 还能从肉眼识别, 但这也是风险点

John Yan
John Yan

所以我们在数据分析的过程中, 不建议大家使用带空格的字段关联查找,不要使用带空格的字段做这主键