Удаление всех смайлов из текста

Этот вопрос был задан здесь Python: как удалить все смайлы Без решения , У меня как шаг к решению. Но нужна помощь, чтобы закончить это.

Я пошел и получил все шестнадцатеричные коды смайликов с сайта смайликов: https://www.unicode.org/emoji/charts/emoji-ordering.txt

Затем я прочитал в файле так:

file = open('emoji-ordering.txt')
temp = file.readline()

final_list = []

while temp != '':
    #print(temp)
    if not temp[0] == '#' :
            utf_8_values = ((temp.split(';')[0]).rstrip()).split(' ')
            values = ["u\\"+(word[0]+((8 - len(word[2:]))*'0' + word[2:]).rstrip()) for word in utf_8_values]
            #print(values[0])
            final_list = final_list + values
    temp = file.readline()

print(final_list)

Я надеялся, что это даст мне литералы Unicode. Это не так, моя цель - получить литералы Unicode, чтобы я мог использовать часть решения из последнего вопроса и иметь возможность исключить все смайлы. Есть идеи, что нам нужно, чтобы получить решение?


person FeFiFoFum    schedule 06.07.2018    source источник


Ответы (2)


Сначала установите эмодзи:

pip install emoji

or

pip3 install emoji

Итак, сделайте это:

import emoji

def give_emoji_free_text(self, text):
    allchars = [str for str in text]
    emoji_list = [c for c in allchars if c in emoji.UNICODE_EMOJI]
    clean_text = ' '.join([str for str in text.split() if not any(i in str for i in emoji_list)])

    return clean_text

text = give_emoji_free_text(text)

Эта работа для меня!

Или вы можете попробовать:

emoji_pattern = re.compile("["
        u"\U0001F600-\U0001F64F"  # emoticons
        u"\U0001F300-\U0001F5FF"  # symbols & pictographs
        u"\U0001F680-\U0001F6FF"  # transport & map symbols
        u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
        u"\U0001F1F2-\U0001F1F4"  # Macau flag
        u"\U0001F1E6-\U0001F1FF"  # flags
        u"\U0001F600-\U0001F64F"
        u"\U00002702-\U000027B0"
        u"\U000024C2-\U0001F251"
        u"\U0001f926-\U0001f937"
        u"\U0001F1F2"
        u"\U0001F1F4"
        u"\U0001F620"
        u"\u200d"
        u"\u2640-\u2642"
        "]+", flags=re.UNICODE)

text = emoji_pattern.sub(r'', text)
person Caíque Coelho    schedule 29.09.2018

Вот сценарий Python, который использует get_emoji_regexp() из библиотеки эмодзи.

Он считывает текст из файла и записывает текст без смайлов в другой файл.

import emoji
import re

def strip_emoji(text):
    print(emoji.emoji_count(text))
    new_text = re.sub(emoji.get_emoji_regexp(), r"", text)
    return new_text


with open("my_file.md", "r") as file:
    old_text = file.read()

no_emoji_text = strip_emoji(old_text)

with open("file.md", "w+") as new_file:
    new_file.write(no_emoji_text)
person jeffhale    schedule 26.08.2019