从文本中删除所有表情符号

新手上路,请多包涵

这个问题在这里被问到 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 文字,这样我就可以使用上一个问题的部分解决方案并能够排除所有表情符号。任何想法我们需要什么来获得解决方案?

原文由 FeFiFoFum 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 924
1 个回答

首先安装表情符号:

 pip install emoji

或者

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)

更新:

版本 emoji==1.7.0 是最后一个具有 UNICODE_EMOJI 的版本。

您也可以尝试使用 EMOJI_DATA 来替代 UNICODE_EMOJI。如果您解释如何使用 UNICODE_EMOJI 或显示您的代码,我可以提供更具体的帮助。

或者您可以尝试上述两种解决方案之一:

 text = re.sub(emoji.get_emoji_regexp(), r"", text)

 emoji.replace_emoji(text)

原文由 Caíque Coelho 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题