一日一技:如何移除所有不可見(jiàn)字符?
在這篇文章:隱寫(xiě)術(shù):如何正確保護(hù)文章的版權(quán)?里面,我介紹了兩個(gè)特殊數(shù)字:8204和8205。當(dāng)我們使用chr函數(shù)把他們轉(zhuǎn)化成字符串以后,就能得到兩個(gè)零寬字符。零寬字符肉眼不可見(jiàn),也無(wú)法打印出來(lái)。
實(shí)際上,在整個(gè) Unicode 字符集里面,這種不可見(jiàn)的字符還有很多。比如下面這句話(huà):
- See what's hidden in your string… or behind
如果在 Python 里面,使用repr函數(shù)顯示這個(gè)字符串真正的樣子,那么可以看到里面實(shí)際上有哪些字符:
那么,現(xiàn)在問(wèn)題來(lái)了。如果給你一個(gè)字符串,如何把里面所有的不可見(jiàn)字符全部移除呢?
由于不知道里面有哪些不可見(jiàn)字符,所以顯然不可能通過(guò)窮舉的方法一個(gè)一個(gè)移除。那么,我們應(yīng)該怎么把他們?nèi)恳瞥?
這個(gè)時(shí)候,我們可以使用字符串的.isprintable()方法。對(duì)于可見(jiàn)字符,這個(gè)方法返回 True,對(duì)于不可見(jiàn)字符,它返回False。例如:
于是,對(duì)于上面的字符串,我們可以通過(guò)這個(gè)方法,移除所有不可見(jiàn)字符,如下圖所示:
本文轉(zhuǎn)載自微信公眾號(hào)「未聞Code」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系未聞Code公眾號(hào)。