python 文本处理中 空字符串却有长度

pandas 用 read_excel 读取的 csv文件,其中拿出一个列的某一值, 发现字符串是空值但是长度为1!!

img

在对它encode发现他是有值的

img

请问是什么原因?!

补充:

img

x的值来源与dataframe, 如图 第一个空值

img

img

自问自答一下吧, 找了好久发现其实这个看似空的字符串其实是emoji符号里的 Variation Selector,中文译为「变体选择符」

使用 unicode_escape 查看其unicode内存编码

img

如图ufe0f, 使用 16 号变体选择符(U+FE0F)能把某些文字(如数字、骷髅符号、雌/雄符号 等)变成绘文字。比如飞机字符,unicode编码'U+2708',默认是'✈',而如果在这个字符后面紧跟着'U+FE0F'这个控制字符,则展示效果会变成✈️

这里的变体选择符不显示是因为他本来就是没有内容。但因为有占位所以有长度。



一些资料:
Unicode 标准编码的「变体选择符」如何使用? - 知乎
Some emojis ending with `\ufe0f` are not completely matched · Issue #28 · mathiasbynens/emoji-regex · GitHub

请注意 空字符串 和 含有空格的字符串,这俩不一样,含有空格的字符串中,有空格转义字符(转义字符占一个字符)

img