编辑:我已经尝试了链接重复问题中的一种解决方案。使用regex
和regex.findall(r'\X',tweet)
的答案有效。但是,我刚刚更新了regex
软件包,但现在失败了。不知道为什么会这样。
我正在尝试从推文中正确提取所有表情符号。我的问题是某些表情符号需要一个代码点,而其他表情符号(例如国家/地区标志)需要两个代码点。例如:
tweet = RT @CreepyHorrorGal: • ???☠?? #creepy #horror
这是我在Python中打印推文时看到的。但是,当我这样做时:
for c in tweet:
print(c)
我告诉我:
...
a
l
:
•
?
?
?
☠
?
?
...
在这里,标志的两个代码点被分开并分别解释。还有以下代码
tweet.encode('utf-16','surrogatepass').decode('utf-16').encode("raw_unicode_escape").decode("latin_1")
给我:
RT @CreepyHorrorGal: \u2022 \U0001f453\U0001f1ec\U0001f1e7\u2620\U0001f632\U0001f922 #creepy #horror
原则上,我理解所有输出。但是,我想知道浏览器(Jupyter笔记本电脑)是否知道\U0001f1ec\U0001f1e7
是一个需要两个代码点的表情符号,尤其是考虑到它后面是其他表情符号,并且后面没有空格。
该如何正确可靠地提取所有表情符号?现在,我使用一个简单的正则表达式,但它仅适用于单个代码点,即“销毁”标志。我该怎么解决?