Итак, первый вопрос, который я когда-либо задавал здесь, и о смайликах. Прости.
Я делаю твиттер-бота на python с помощью Tweepy и regex (также пробовал python-pcre ), который будет анализировать твит данного пользователя и запишите, сколько раз использовалось слово или смайлик. Я могу сделать большую часть этого просто отлично. Мои проблемы начинаются с смайликов.
У меня сложилось впечатление, что при использовании \ X (и в regex, и в python-pcre) найдутся кластеры расширенных графем. Не только отдельные. Я прочитал в другом посте Что соответствует выражению \ X внутри RegEx? , что \ X следует ряду рекомендаций, чтобы определить, должен ли следующий символ быть кластеризованным, но всегда будет возвращать хотя бы 1.
Я попробовал первое и второе решение в этом посте: Как извлечь все смайлики из текста? .
Первый действовал, как и ожидалось. Захватывает отдельные кодовые точки и добавляет их в список. Идеально подходит для смайликов с одним кодом, но мне нужно захватывать смайлики с помощью нескольких кодов и одного смайлика с кодом.
Второе решение - у меня проблемы. Согласно сообщению, эта функция должна печатать эмодзи в виде строки, в кластерах, разделенных пробелами.
def split_count(self, text):
emoji_list = []
data = regex.findall(r'\X', text)
for word in data:
if any(char in emoji.UNICODE_EMOJI for char in word):
emoji_list.append(word)
return emoji_list
Когда вызывается как:
counter = self.split_count(tweet)
print(' '.join(emoji for emoji in counter))
Должно привести к:
? ????
Однако, когда я запускаю его, я получаю:
? ? ? ? ?
100% не кластеризовано.
Почему это происходит? Это беспокоило меня уже пару дней.