我有一些大约100个字符的字符串,我需要检测每个字符串是否包含unicode字符。最后的目的是检查是否存在某些特定的表情符号,但最初我只想要一个捕获所有表情符号的过滤器(以及可能的其他特殊字符)。这种方法应该很快。
我见过Python regex matching Unicode properties,但我不能使用任何自定义包。我正在使用Python 2.7。谢谢!
答案 0 :(得分:1)
测试'如果字符串包含Unicode字符'没有意义,因为字符串中的所有字符都是Unicode字符。 Unicode标准包含Python支持的所有代码点,包括ASCII范围(Unicode代码点U + 0000到U + 007F)。
如果您要测试表情符号代码,请测试特定范围,如Unicode Emoji class specification所示:
re.compile(
u'[\u231A-\u231B\u2328\u23CF\23E9-\u23F3...\U0001F9C0]',
flags=re.UNICODE)
您必须选择 认为是表情符号的代码点。我个人不会在该类别中包含U+0023 NUMBER SIGN,但显然Unicode标准确实。
注意:显而易见,上述表达式并不完整。表情符号类别中有209个单独的条目,我不想写出 all 。
另一个注意事项:上面使用\Uhhhhhhhh
宽的Unicode转义序列;它的使用仅在Python 3.3及更高版本的正则表达式模式中支持,或者在早期版本的Python的wide (UCS-4) build中支持。对于一个狭窄的Python构建,你需要match on surrogate pairs来获得超过U + FFFF的代码点。