【问题标题】:How to extract all the emojis from text?如何从文本中提取所有表情符号?
【发布时间】:2020-03-15 18:50:34
【问题描述】:

考虑以下列表:

a_list = ['???? ???? me así, bla es se ???? ds ????????????']

如何在新列表中提取a_list 中的所有表情符号?:

new_lis = ['???? ???? ???? ???? ???? ????']

我尝试使用正则表达式,但我没有所有可能的表情符号编码。

【问题讨论】:

标签: python python-3.x emoji


【解决方案1】:

如果一个库看起来有点矫枉过正,试试这个正则表达式 - 它通过在一个大的交替中首先匹配最长的表情符号来工作。解析所有表情符号、所有肤色和所有标志。 (v14.0)more info

# coding=utf8
import re
a_list = ['? ? me así, bla es se ? ds ???']
ret = re.findall(r'(?:??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|??‍❤️‍?‍??|???????|???????|???????|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍?‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|??‍❤️‍??|?‍❤️‍?‍?|?‍❤️‍?‍?|?‍❤️‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?‍?|?‍?‍?|?‍❤️‍?|?‍❤️‍?|?‍❤️‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?‍?‍?|?️‍?️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍⚕️|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍⚖️|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍✈️|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍?|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♂️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|??‍♀️|?‍?️|?️‍♂️|?️‍♀️|?️‍♂️|?️‍♀️|?️‍♂️|?️‍♀️|?️‍?|?️‍⚧️|⛹?‍♂️|⛹?‍♂️|⛹?‍♂️|⛹?‍♂️|⛹?‍♂️|⛹?‍♀️|⛹?‍♀️|⛹?‍♀️|⛹?‍♀️|⛹?‍♀️|?‍?|?‍?|❤️‍?|❤️‍?|?‍♂️|?‍♀️|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍♀️|?‍♂️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍⚕️|?‍⚕️|?‍⚕️|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍⚖️|?‍⚖️|?‍⚖️|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍✈️|?‍✈️|?‍✈️|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍?|?‍?|?‍?|?‍?|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍?|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|⛹️‍♂️|⛹️‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍♂️|?‍♀️|?‍?|?‍?|?‍?|?‍?|?‍?|?‍❄️|?‍☠️|?‍⬛|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|??|#️⃣|0️⃣|1️⃣|2️⃣|3️⃣|4️⃣|5️⃣|6️⃣|7️⃣|8️⃣|9️⃣|✋?|✋?|✋?|✋?|✋?|✌?|✌?|✌?|✌?|✌?|☝?|☝?|☝?|☝?|☝?|✊?|✊?|✊?|✊?|✊?|✍?|✍?|✍?|✍?|✍?|⛹?|⛹?|⛹?|⛹?|⛹?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|☺|☹|☠|❣|❤|✋|✌|☝|✊|✍|⛷|⛹|☘|☕|⛰|⛪|⛩|⛲|⛺|♨|⛽|⚓|⛵|⛴|✈|⌛|⏳|⌚|⏰|⏱|⏲|☀|⭐|☁|⛅|⛈|☂|☔|⛱|⚡|❄|☃|⛄|☄|✨|⚽|⚾|⛳|⛸|♠|♥|♦|♣|♟|⛑|☎|⌨|✉|✏|✒|✂|⛏|⚒|⚔|⚙|⚖|⛓|⚗|⚰|⚱|♿|⚠|⛔|☢|☣|⬆|↗|➡|↘|⬇|↙|⬅|↖|↕|↔|↩|↪|⤴|⤵|⚛|✡|☸|☯|✝|☦|☪|☮|♈|♉|♊|♋|♌|♍|♎|♏|♐|♑|♒|♓|⛎|▶|⏩|⏭|⏯|◀|⏪|⏮|⏫|⏬|⏸|⏹|⏺|⏏|♀|♂|⚧|✖|➕|➖|➗|♾|‼|⁉|❓|❔|❕|❗|〰|⚕|♻|⚜|⭕|✅|☑|✔|❌|❎|➰|➿|〽|✳|✴|❇|©|®|™|ℹ|Ⓜ|㊗|㊙|⚫|⚪|⬛|⬜|◼|◻|◾|◽|▪|▫)', a_list[0])
print(ret)
#['?', '?', '?', '?', '?', '?']

【讨论】:

    【解决方案2】:

    好的 - 我遇到了同样的问题,我制定了一个解决方案,它不需要您导入任何库(如 emoji 或 re)并且是一行代码。它将返回字符串中的所有表情符号:

    def extract_emojis(sentence):
        return [word for word in sentence.split() if str(word.encode('unicode-escape'))[2] == '\\' ]
    

    这使我能够创建一个轻量级的解决方案,我希望它对大家有所帮助。实际上 - 我需要一个可以过滤掉字符串中的任何表情符号的工具 - 这与上面的代码相同,但有一个小改动:

    def filter_emojis(sentence):
            return [word for word in sentence.split() if str(word.encode('unicode-escape'))[2] != '\\' ]
    

    这是一个实际应用的例子:

     >>> a = '? ? me así, bla es se ? ds ???'
     >>> b = extract_emojis(a)
     >>> b
     ['?', '?', '?', '???']
    

    【讨论】:

    • 谢谢!在页面上的所有回复中,这个效果最好
    【解决方案3】:

    我认为重要的是要指出之前的答案不适用于 ?‍?‍?‍? 之类的表情符号,因为它由 4 个表情符号组成,使用 ... in emoji.UNICODE_EMOJI 将返回 4 个不同的表情符号。像??这样的肤色的表情符号也是如此。

    我的解决方案

    包括emojiregex 模块。正则表达式模块支持识别 grapheme clusters(Unicode 代码点序列呈现为单个字符),因此我们可以计算像?‍?‍?‍?这样的表情符号

    import emoji
    import regex
    
    def split_count(text):
    
        emoji_list = []
        data = regex.findall(r'\X', text)
        for word in data:
            if any(char in emoji.UNICODE_EMOJI['en'] for char in word):
                emoji_list.append(word)
        
        return emoji_list
    

    测试

    更多带有肤色的表情符号:

    line = ["? ? me así, se ? ds ??? hello ??‍? emoji hello ?‍?‍?‍? how are ? you today????"]
    
    counter = split_count(line[0])
    print(' '.join(emoji for emoji in counter))
    

    输出:

    ? ? ? ? ? ? ??‍? ?‍?‍?‍? ? ?? ??
    

    包括标志

    如果您想包含标志,例如??,Unicode 范围将从??,所以添加:

    flags = regex.findall(u'[\U0001F1E6-\U0001F1FF]', text) 
    

    到上面的函数,和return emoji_list + flags

    有关标志的更多信息,请参阅this answer to "A python regex that matches the regional indicator character class"

    对于较新的emoji 版本

    要使用表情符号 >= v1.2.0,您必须添加语言说明符(例如,en,如上面的代码):

    emoji.UNICODE_EMOJI['en']
    

    【讨论】:

    • 您的代码运行良好,但我们如何处理标志? “??”
    • @NomanDilawar 嗨,抱歉耽搁了。我编辑了我的答案。我进行了一些测试,现在似乎可以正常工作了。
    • 这是我发现的唯一解决方案,可以全面处理我迄今为止遇到的所有表情符号。
    • 另外,我认为写for grapheme in data:而不是for word in data:更好,因为它更好地反映了\X的目的。
    • 从 emoji v.1.2.0 开始,检查必须包含语言说明符,例如any(char in emoji.UNICODE_EMOJI["en"] for char in grapheme)
    【解决方案4】:

    您可以使用emoji 库。您可以检查单个代码点是否为表情符号代码点,方法是检查它是否包含在 emoji.UNICODE_EMOJI 中。

    import emoji
    
    def extract_emojis(s):
      return ''.join(c for c in s if c in emoji.UNICODE_EMOJI['en'])
    

    【讨论】:

    • 您可以下载 #EmojiCodeSheet here 中字符串/int 格式的表情符号列表,用于自定义比较器。
    • 您的代码无法检测到文本中的标志:extract_emojis("?? ? ?")
    • @NomanDilawar 这是因为我的代码会遍历每个字符。 Unicode 标志是两个“区域指示符”字符的组合,它们不是单独的表情符号。如果你想检测 Unicode 标志,你需要检查成对的字符。
    • @Nomiluks 我必须按语言过滤它或进行递归字典搜索。 '?' 在 emoji.UNICODE_EMOJI['en']
    • 在 Python 3.6 中不起作用?我得到一个空字符串。
    【解决方案5】:

    这是另一个使用emoji.get_emoji_regexp()re 的选项:

    import re
    import emoji
    
    def extract_emojis(text):
        return re.findall(emoji.get_emoji_regexp(), text)
    
    test_str = '? some ? various ? emojis ??‍? and ?? flags ?‍?‍?‍?'
    emojis = extract_emojis(test_str)
    

    这会产生:

    ['?', '?', '?', '??\u200d?', '??', '?\u200d?\u200d?\u200d?']
    

    或者,查看字素簇:

    print(' '.join(emoji for emoji in emojis))
    

    产量

    ? ? ? ??‍? ?? ?‍?‍?‍?
    

    【讨论】:

      【解决方案6】:
      import emojis
      new_list = emojis.get('? ? me así, bla es se ? ds ???')
      print(new_list)
      
      output>>>{'?', '?', '?', '?', '?', '?'}
      

      【讨论】:

        【解决方案7】:

        首先你需要安装这个:

        conda install -c conda-forge emoji
        

        现在我们可以编写如下代码:

        import emoji
        import re
        text= '? ? me así, bla es se ? ds ???'
        text_de= emoji.demojize(text)
        

        如果我们打印 text_de 输出是:

        ':thinking_face: :see-no-evil_monkey: me así, bla es se :relieved_face: ds 
         :two_hearts::two_women_holding_hands::bikini:'
        

        现在我们可以使用正则表达式来查找表情符号了。

        emojis_list_de= re.findall(r'(:[!_\-\w]+:)', text_de)
        list_emoji= [emoji.emojize(x) for x in emojis_list_de]
        

        如果我们打印 lis_emoji,输出:

        ['?', '?', '?', '?', '?', '?']
        

        所以,我们可以使用Join函数:

        [''.join(list_emoji)]
        OutPut: ['??????']
        

        如果要删除表情符号,可以使用以下代码:

        def remove_emoji(text):
           '''
           remove all of emojis from text
           -------------------------
           '''
           text=  emoji.demojize(text)
           text= re.sub(r'(:[!_\-\w]+:)', '', text)
        
           return text
        

        【讨论】:

          【解决方案8】:

          使用emoji 的另一种方法是使用emoji.demojize 并将它们转换为表情符号的文本表示形式。

          例如:? 将转换为 :grinning_face: etc..

          然后找到所有:.*: 模式,并在这些模式上使用emoji.emojize

          # -*- coding: utf-8 -*-
          import emoji
          import re
          
          text = """
          Of course, too many emoji characters \
          ? like ?, #@^!*&#@^# ? helps ? people read ?aa?aaa?a #douchebag
          """
          
          text = emoji.demojize(text)
          text = re.findall(r'(:[^:]*:)', text)
          list_emoji = [emoji.emojize(x) for x in text]
          print(list_emoji)
          
          

          这可能是一种多余的方式,但它是如何使用 emoji.emojizeemoji.demojize 的示例。

          【讨论】:

            【解决方案9】:

            此函数需要一个字符串,因此将输入列表转换为字符串

            a_list = '? ? me así, bla es se ? ds ???'
            
            # Import the necessary modules
            from nltk.tokenize import regexp_tokenize
            
            # Tokenize and print only emoji
            emoji = "['\U0001F300-\U0001F5FF'|'\U0001F600-\U0001F64F'|'\U0001F680- 
             \U0001F6FF'|'\u2600-\u26FF\u2700-\u27BF']"
            
            print(regexp_tokenize(a_list, emoji)) 
            
            output :['?', '?', '?', '?', '?']
            

            【讨论】:

              【解决方案10】:
              from emoji import *
              
              EMOJI_SET = set()
              
              # populate EMOJI_DICT
              def pop_emoji_dict():
                  for emoji in UNICODE_EMOJI:
                      EMOJI_SET.add(emoji)
              
              # check if emoji
              def is_emoji(s):
                  for letter in s:
                      if letter in EMOJI_SET:
                          return True
                  return False
              

              在处理大型数据集时,这是一个更好的解决方案,因为您不必每次都遍历所有表情符号。发现这个能给我更好的结果:)

              【讨论】:

                【解决方案11】:

                第 1 步:确保您的文本以 utf-8 解码 text.decode('utf-8')

                第 2 步:从您的文字中找到所有表情符号,您必须将文字逐个字符分开 [str for str in decode]

                第 3 步: 将所有表情符号保存在列表中[c for c in allchars if c in emoji.UNICODE_EMOJI] 完整示例如下:

                >>> import emoji
                >>> text     = "? ? me así, bla es se ? ds ???"
                >>> decode   = text.decode('utf-8')
                >>> allchars = [str for str in decode]
                >>> list     = [c for c in allchars if c in emoji.UNICODE_EMOJI]
                >>> print list
                [u'\U0001f914', u'\U0001f648', u'\U0001f60c', u'\U0001f495', u'\U0001f46d', u'\U0001f459']
                

                如果你想从文本中删除

                >>> filtred  = [str for str in decode.split() if not any(i in str for i in list)]
                >>> clean_text = ' '.join(filtred)
                >>> print clean_text
                me así, bla es se ds
                

                【讨论】:

                  【解决方案12】:

                  要准确了解 tumbleweed 的问题,解决方案是综合评价最高的答案和 user594836 的答案。这是在 Python 3.6 中适用于我的代码。

                  import emoji
                  import re
                  
                  test_list=['? ? me así,bla es,se ? ds ???']
                  
                  ## Create the function to extract the emojis
                  def extract_emojis(a_list):
                      emojis_list = map(lambda x: ''.join(x.split()), emoji.UNICODE_EMOJI.keys())
                      r = re.compile('|'.join(re.escape(p) for p in emojis_list))
                      aux=[' '.join(r.findall(s)) for s in a_list]
                      return(aux)
                  
                  ## Execute the function
                  extract_emojis(test_list)
                  
                  ## the output
                  ['? ? ? ? ? ?']
                  

                  【讨论】:

                    【解决方案13】:

                    评分最高的答案并不总是有效。例如,将找不到标志表情符号。考虑字符串:

                    s = u'Hello \U0001f1f7\U0001f1fa hello'
                    

                    更好的方法是

                    import emoji
                    emojis_list = map(lambda x: ''.join(x.split()), emoji.UNICODE_EMOJI.keys())
                    r = re.compile('|'.join(re.escape(p) for p in emojis_list))
                    print(' '.join(r.findall(s)))
                    

                    【讨论】:

                      【解决方案14】:

                      如果您不想使用外部库,作为一种 Python 方式,您可以简单地使用正则表达式和 re.findall() 以及适当的正则表达式来查找表情符号:

                      In [74]: import re
                      In [75]: re.findall(r'[^\w\s,]', a_list[0])
                      Out[75]: ['?', '?', '?', '?', '?', '?']
                      

                      正则表达式r'[^\w\s,]' 是一个否定字符类,它匹配任何不是单词字符、空格或逗号的字符。

                      正如我在评论中提到的,文本通常包含单词字符和标点符号,这种方法很容易处理,对于其他情况,您可以手动将它们添加到字符类中。请注意,由于您可以在字符类中指定一系列字符,因此您甚至可以使其更短、更灵活。

                      另一种解决方案是使用接受表情符号的字符类([] 不带^)来代替排除非表情符号字符的否定字符类。由于with different unicode values 的表情符号很多,您只需将范围添加到字符类即可。如果您想匹配更多表情符号,这里是一个很好的参考,包含所有标准表情符号以及不同表情符号的相应范围http://apps.timwhitlock.info/emoji/tables/unicode

                      【讨论】:

                      • 这适用于这个特定的输入,但还有许多其他非表情符号字符不属于\w\s 或逗号类别。
                      • @user2357112 文本通常包含单词字符和标点符号,这种方法很容易处理,对于其他情况,您可以手动将它们添加到字符类中。请注意,因为您可以指定字符类中的一系列字符,您甚至可以使其更短、更灵活。
                      • 您的正则表达式在所有非逗号标点符号上都失败了。
                      • @user2357112 这就是我所说的。如果需要,您可以将它们添加到角色类中。您不必总是包含所有案例,它是相对的并且基于您正在处理的文本。
                      • 手动将文本中的每个非表情符号字符添加到正则表达式是一种糟糕、臃肿且容易出错的解决方案。
                      【解决方案15】:

                      所有带有各自代码点的 Unicode 表情符号都是here。它们是 1F600 到 1F64F,因此您可以使用类似范围的迭代器来构建所有这些。

                      【讨论】:

                      • 这只是表情符号的一个特定范围。还有很多。
                      猜你喜欢
                      • 2015-08-02
                      • 2021-09-21
                      • 2018-12-15
                      • 2020-12-24
                      • 2022-06-22
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多