我正在尝试删除表情符号以外的所有非字母数字字符。因此,编写了以下代码:
>>> import re
>>> re.sub(r"[^a-zA-Z0-9_#@\s\U00010000-\U0010ffff]", '', "THAT ASc776 ^ .? + #> _")
它可以正常工作并返回:
'THAT ASc776 ? #> _'
但是,如果我在文字中加上表情符号,仍然会得到相同的结果:
>>> re.sub(r"[^a-zA-Z0-9_#@\s\U00010000-\U0010ffff]", '', "THAT ASc776 ^ .? + #> _")
'THAT ASc776 ? #> _'
我意识到表情符号是unicode,所以我也尝试了以下方法
>>> RE_EMOJI = re.compile('[^\U00010000-\U0010ffffa-zA-Z0-9_#@\s]', flags=re.UNICODE)
>>> RE_EMOJI.sub('','AHAT ASc776 ^ .? + #> _')
'AHAT ASc776 ? #> _'
但是它仍然无法识别表情符号。那么从文本中删除除表情符号之外的所有字母数字字符的正确方法是什么。
编辑:
使用python3.5时,代码可以正常工作并产生正确的输出。但是,我使用的是python2.7,它不适用于python2.7。