您将无法识别正确解码的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