Распознать смайлики, указанные в скобках в строке - PullRequest
0 голосов
/ 22 мая 2019

Я сохранил сообщение Skype как строки (на телефоне Android).Строки могут содержать Skype Emojis.Например, строка может быть «Это тест (смеется)».Смайлики закодированы в скобках, таких как (смех), (улыбка) и т. Д.

Теперь я хотел бы посчитать количество смайликов в предложении и убрать смайлики из предложения.Конечно, я мог бы просто посчитать количество пар () и удалить их, но это также удалило бы обычный текст, указанный в скобках.Более того, в редких случаях бывает так, что смайлики также задаются как :( или: / и т. Д.

Есть ли элегантный способ подсчета количества смайликов в строке и удаления их в Python?

1 Ответ

2 голосов
/ 22 мая 2019

Обратите внимание, что Skype и несколько других программ используют его формат "emoji". Настоящий формат смайликов строго указан. Есть библиотека Python для работы с настоящими смайликами: emoji . Вы можете попытаться найти свои смайлики с помощью параметра delimiters функции emojize и функции emoji_lis:

import emoji

waka = ':smile: :) (smile) :smiling_face: WAKA (sign_of_the_horns_medium-light_skin_tone) :speak-no-evil_monkey:'
print(emoji.emoji_lis(emoji.emojize(waka, use_aliases=True)))

[{'location': 0, 'emoji': '?'}, {'location': 13, 'emoji': '☺'}, {'location': 63, 'emoji': '?'}]
print(emoji.emoji_lis(emoji.emojize(waka, delimiters=('(', ')'))))

[{'location': 39, 'emoji': '?'}]

Обратите внимание, что вы не найдете улыбки (например, :), :( и т. Д.), Только смайлики. Вы также не можете найти все «смайлики» в тексте, потому что не можете гарантировать, что Skype использует официальные имена смайликов (более того, я уверен, что не использует их). Если вы тоже хотите найти смайлики, вы должны создать свой собственный диктат с помощью смайликов, «эмоджи» в скайпе и т. Д.

...