一日一技:如何移除所有不可见字符?

举报
未闻Code 发表于 2022/04/15 19:28:47 2022/04/15
【摘要】 给你一个字符串,如何把里面所有的不可见字符全部移除呢?由于不知道里面有哪些不可见字符,所以显然不可能通过穷举的方法一个一个移除。那么,我们应该怎么把他们全部移除呢?

在这篇文章:隐写术:如何正确保护文章的版权?里面,我介绍了两个特殊数字:82048205。当我们使用chr函数把他们转化成字符串以后,就能得到两个零宽字符。零宽字符肉眼不可见,也无法打印出来。

实际上,在整个 Unicode 字符集里面,这种不可见的字符还有很多。比如下面这句话:

See what's hidden in your string… or behind 

如果在 Python 里面,使用repr函数显示这个字符串真正的样子,那么可以看到里面实际上有哪些字符:

图片

那么,现在问题来了。如果给你一个字符串,如何把里面所有的不可见字符全部移除呢?

由于不知道里面有哪些不可见字符,所以显然不可能通过穷举的方法一个一个移除。那么,我们应该怎么把他们全部移除呢?

这个时候,我们可以使用字符串的.isprintable()方法。对于可见字符,这个方法返回 True,对于不可见字符,它返回False。例如:

图片

于是,对于上面的字符串,我们可以通过这个方法,移除所有不可见字符,如下图所示:

图片

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。