考虑以下列表:
a_list = ['🤔 🙈 me así, bla es se 😌 ds 💕👭👙']
如何在新列表中提取所有表情符号 a_list
?:
new_lis = ['🤔 🙈 😌 💕 👭 👙']
我尝试使用正则表达式,但我没有所有可能的表情符号编码。
原文由 tumbleweed 发布,翻译遵循 CC BY-SA 4.0 许可协议
考虑以下列表:
a_list = ['🤔 🙈 me así, bla es se 😌 ds 💕👭👙']
如何在新列表中提取所有表情符号 a_list
?:
new_lis = ['🤔 🙈 😌 💕 👭 👙']
我尝试使用正则表达式,但我没有所有可能的表情符号编码。
原文由 tumbleweed 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为必须指出,之前的答案不适用于 👨👩👦👦 等表情符号,因为它由 4 个表情符号组成,使用 ... in emoji.UNICODE_EMOJI
将返回 4 个不同的表情符号。对于像 🙅🏽 这样的肤色的表情符号也是如此。
包括 emoji
和 regex
模块。正则表达式模块支持识别字 _素簇_(呈现为单个字符的 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
。
有关标志的更多信息,请参阅 “A python regex that matches the regional indicator character class”的答案。
emoji
版本要使用表情符号 >= v1.2.0,您必须添加语言说明符(例如 en
如上面的代码所示):
emoji.UNICODE_EMOJI['en']
原文由 sheldonzy 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
您可以使用
emoji
库。您可以检查单个代码点是否为表情符号代码点,方法是检查它是否包含在emoji.UNICODE_EMOJI
中。