从python列表中提取所有可能的表情符号

时间:2017-09-12 14:01:23

标签: python unicode nltk emoticons

目的

我试图从unicode单词列表中提取所有可能的表情符号。 我正在使用带有anaconda安装的Python3,因此我无法使用emoji.py等软件包。

这是一个单词列表示例。

lst = ['✅','türkçe','Çile','ısp','İst','ğ','some','#','@','@one','#thing','','1','41','ç','ö','⏱','⏱','','₺','€',':)',':/']

预期输出是这样的:

out = ['✅','⏱', '⏱','']

尝试1

列出理解以检查所有字符是否为ASCII:

[w for w in lst if len(w) != len(w.encode())]

但是,由于文本中有非ASCII字母,因此无法提供所需的输出。此外,货币符号不是表情符号。

['✅', 'türkçe', 'Çile', 'ısp', 'İst', 'ğ', 'ç', 'ö', '⏱', '⏱', '', '₺', '€']

尝试2

使用NTLK表情符号正则表达式

from nltk.tokenize.casual import EMOTICON_RE
EMOTICON_RE.findall(' '.join(lst))

但是,EMOTICON_RE只能提取:) :/ :(等表达式

以下列出了我要考虑的emoticons

我试图建立一个表情符号列表,看看我的单词是否存在于该列表中,但我无法从unicode字符代码构建表情符号列表。

你能建议吗?

1 个答案:

答案 0 :(得分:1)

我认为所有这些角色都在 Symbol,其他 category中。因此你可以做到

[w for w in lst if any(c for c in w if unicodedata.category(c) == 'So')]