Извлечение Unicode-смайликов в список, Python 3.x
Я работаю над некоторыми твиттер-данными и хочу отфильтровать смайлики в списке. Сами данные кодируются в utf8. Я прочитал файл построчно, как эти три строки примера:
['This', 'is', 'a', 'test', 'tweet', 'with', 'two', 'emoticons', '', '⚓️']
['This', 'is', 'another', 'tweet', 'with', 'a', 'emoticon', '']
['This', 'tweet', 'contains', 'no', 'emoticon']
Я хотел бы собрать смайлики для каждой строки следующим образом:
['', '⚓️']
и так далее.
Я уже исследовал и обнаружил, что в python есть пакет 'emoji'. Я пытался использовать его в своем коде, как это
import emoji
with open("file.txt", "r", encoding='utf-8') as f:
for line in f:
elements = []
col = line.strip('\n')
cols = col.split('\t')
elements.append(cols)
emoji_list = []
data = re.findall(r'\X', elements)
for word in data:
if any(char in emoji.UNICODE_EMOJI for char in word):
emoji_list.append(word)
Первая попытка
import emoji
with open("file.txt", "r", encoding='utf-8') as f:
for line in f:
elements = []
col = line.strip('\n')
cols = col.split('\t')
elements.append(cols)
emoji_list = []
for c in elements:
if c in emoji.UNICODE_EMOJI:
emojilist.append(c)
Вторая попытка
Я попробовал примеры, которые были приведены здесь. Как извлечь все смайлики из текста? но они вроде не работают для меня, и я не уверен, что я сделал не так.
Буду очень признателен за помощь в извлечении смайликов, заранее спасибо!:)
1 ответ
Emojis существуют в нескольких диапазонах Unicode, представленных этим шаблоном регулярных выражений:
>>> import re
>>> emoji = re.compile('[\\u203C-\\u3299\\U0001F000-\\U0001F644]')
Вы можете использовать это для фильтрации ваших списков:
>>> list(filter(emoji.match, ['This', 'is', 'a', 'test', 'tweet', 'with', 'two', 'emoticons', '', '⚓️']))
['', '⚓️']
NB. Шаблон является приблизительным и может содержать некоторые дополнительные символы.