Python 2.7范围正则表达式匹配unicode表情符号

时间:2014-03-08 02:30:01

标签: regex python-2.7 unicode emoticons

如何使用python 2.7正则表达式计算字符串中unicode表情符号的数量?我尝试了这个问题的第一个答案。但它一直显示无效的表达错误。

re.findall(u'[\ U0001f600- \ U0001f650]',s.decode('utf-8'))无效并显示无效的表达错误

How to find and count emoticons in a string using python?

“谢谢你帮忙(Emoticon1)笑脸图释岩石!(Emoticon2)”

数:2

1 个答案:

答案 0 :(得分:0)

问题可能是因为使用了"狭窄的构建" Python 2.也就是说,如果你启动翻译,你会发现sys.maxunicode == 0xffffTrue

This site有一些有关Python广泛构建的有趣说明(在Linux上常见,但根据我的经验,不是,正如链接所示,在OS X上)。这些构建在内部使用UCS-4对字符进行编码,因此似乎更加支持更高范围的Unicode代码点,例如您正在讨论的范围。窄版本显然在内部使用UTF-16,因此使用"代理对"编码这些更高的代码点。我认为这是您在尝试编译此正则表达式时看到bad character range错误的原因。

我知道的唯一解决方案是切换到python版本> = 3.3 no longer has the wide/narrow distinction如果可以,或install a wide Python build