您將無法識別正確解碼的unicode碼點(包含\uXXXX
等的字符串)。正確解碼,到正則表達式解析器到達它們時,每個碼都是*字符。
根據您的蟒蛇是否只有16位的Unicode碼點或沒有編譯,你會想要一個模式類似之一:
# 16-bit codepoints
re_strip = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
# 32-bit* codepoints
re_strip = re.compile(u'[\U00010000-\U0010FFFF]')
而且你的代碼看起來像:
import re
# Pick a pattern, adjust as necessary
#re_strip = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
re_strip = re.compile(u'[\U00010000-\U0010FFFF]')
content= u'[\u86cb\u767d12\U0001f633\uff0c\u4f53\u6e29\u65e9\u6668\u6b63\u5e38\uff0c\u5348\u540e\u665a\u95f4\u53d1\u70ed\uff0c\u6211\u73b0\u5728\u8be5\u548b\U0001f633]'
print(content)
stripped = re_strip.sub('', content)
print(stripped)
兩個表達式,在stripped
字符串中的字符的數量減少到26
這些表達式剔除你後的表情符號,BU t也可以去掉其他東西做想要的。值得查看一個unicode代碼點範圍列表(例如here)並對其進行調整。
你可以決定你是否蟒安裝只能通過執行類似識別16位碼點:
import sys
print(sys.maxunicode.bit_length())
如果這顯示16,你需要第一個正則表達式。如果它顯示的東西大於16(對我來說它說21),第二個是你想要的。
這兩個表達式在Python安裝時使用錯誤的sys.maxunicode
都不起作用。
另請參閱:this相關。
非常感謝。有用。但是你說它可能會剝奪我想要的其他東西。那麼,如果我只想刪除表情符號呢?內容可能包含漢字,數字,字母,標點和表情符號。順便說一句,我的python只編譯了16位unicode代碼點。 – sophiaCY
嗯,它*可能*。我「過濾」出的代碼點從10000開始(這裏是http://jrgraphix.net/research/unicode_blocks.php)。因此,「線性B音節」到「標籤」中的任何內容。根據我的經驗,大多數字體甚至沒有這些代碼點的字形。所以,你所要做的任何事情都不太可能在這個範圍內,所以過濾可能很好,但這只是一些需要注意的事情。 – jedwards