【发布时间】:2020-03-15 18:50:34
【问题描述】:
考虑以下列表:
a_list = ['???? ???? me así, bla es se ???? ds ????????????']
如何在新列表中提取a_list 中的所有表情符号?:
new_lis = ['???? ???? ???? ???? ???? ????']
我尝试使用正则表达式,但我没有所有可能的表情符号编码。
【问题讨论】:
标签: python python-3.x emoji
考虑以下列表:
a_list = ['???? ???? me así, bla es se ???? ds ????????????']
如何在新列表中提取a_list 中的所有表情符号?:
new_lis = ['???? ???? ???? ???? ???? ????']
我尝试使用正则表达式,但我没有所有可能的表情符号编码。
【问题讨论】:
标签: python python-3.x emoji
如果一个库看起来有点矫枉过正,试试这个正则表达式 - 它通过在一个大的交替中首先匹配最长的表情符号来工作。解析所有表情符号、所有肤色和所有标志。 (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)
#['?', '?', '?', '?', '?', '?']
【讨论】:
好的 - 我遇到了同样的问题,我制定了一个解决方案,它不需要您导入任何库(如 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
['?', '?', '?', '???']
【讨论】:
我认为重要的是要指出之前的答案不适用于 ???? 之类的表情符号,因为它由 4 个表情符号组成,使用 ... in emoji.UNICODE_EMOJI 将返回 4 个不同的表情符号。像??这样的肤色的表情符号也是如此。
包括emoji 和regex 模块。正则表达式模块支持识别 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']
【讨论】:
for grapheme in data:而不是for word in data:更好,因为它更好地反映了\X的目的。
any(char in emoji.UNICODE_EMOJI["en"] for char in grapheme)
您可以使用emoji 库。您可以检查单个代码点是否为表情符号代码点,方法是检查它是否包含在 emoji.UNICODE_EMOJI 中。
import emoji
def extract_emojis(s):
return ''.join(c for c in s if c in emoji.UNICODE_EMOJI['en'])
【讨论】:
这是另一个使用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))
产量
? ? ? ??? ?? ????
【讨论】:
import emojis
new_list = emojis.get('? ? me así, bla es se ? ds ???')
print(new_list)
output>>>{'?', '?', '?', '?', '?', '?'}
【讨论】:
首先你需要安装这个:
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
【讨论】:
使用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.emojize 和 emoji.demojize 的示例。
【讨论】:
此函数需要一个字符串,因此将输入列表转换为字符串
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 :['?', '?', '?', '?', '?']
【讨论】:
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
在处理大型数据集时,这是一个更好的解决方案,因为您不必每次都遍历所有表情符号。发现这个能给我更好的结果:)
【讨论】:
第 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
【讨论】:
要准确了解 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
['? ? ? ? ? ?']
【讨论】:
评分最高的答案并不总是有效。例如,将找不到标志表情符号。考虑字符串:
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)))
【讨论】:
如果您不想使用外部库,作为一种 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 或逗号类别。
所有带有各自代码点的 Unicode 表情符号都是here。它们是 1F600 到 1F64F,因此您可以使用类似范围的迭代器来构建所有这些。
【讨论】: