我試圖從unicode字符串中刪除標點符號,該字符串可能包含非ascii字母。我嘗試使用regex
模塊:從unicode字符串去除特殊字符和標點符號
import regex
text = u"<Üäik>"
regex.sub(ur"\p{P}+", "", text)
不過,我已經注意到,人物<
和>
沒有得到清除。有誰知道爲什麼,有沒有其他方式來從Unicode字符串中去除標點符號?
編輯:我已經嘗試了另一種方法是這樣做的:
import string
text = text.encode("utf8").translate(None, string.punctuation).decode("utf8")
,但我想,以避免文本從Unicode轉換爲字符串和倒退。
你應該定義是什麼標點符號。特別是在unicode中,根據您的語言,這可能會有很多字符和字符組合。 –
你不需要在高位轉換爲UTF-8來使用'unicode.translate()'。使用'text.translate(dict.fromkeys(ord(c)for string.punctuation))'。 –
而'\ p {P}'不包括'<' as '>';那些沒有被分類爲標點符號。它們是[數學符號(Sm)](https://codepoints.net/search?gc=Sm)chodepoints。 –