Python 过滤字符串中的emoji

史同化
2023-12-01

使用python环境过滤文本当中的emoji表情

在使用spark处理用户评论时发现大量的ermoji无效表情,几乎不能作为有效评论,所以需要删除其中的无用emoji表情

方法一

需要先导入 emoji 包,然后通过写好的 give_emoji_free_text 函数操作

pip install emoji
import emoji

def give_emoji_free_text(text):
    allchars = [str for str in text.decode('utf-8')]
    emoji_list = [c for c in allchars if c in emoji.UNICODE_EMOJI]
    clean_text = ' '.join([str for str in text.decode('utf-8').split() if not any(i in str for i in emoji_list)])
    return clean_text

temp = u"it's okay love you \u2764\ufe0f\u2665\ufe0f\u2665\ufe0f\u2665\ufe0f"
temp1 = u'nice\U0001f60a\U0001f60a'
result = give_emoji_free_text(temp.encode('utf8'))

temp 的输出是已经去掉了字符串中原有的emoji

temp  (u"it's okay love you")
temp1 (u'nice\U0001f60a\U0001f60a')

但是对于temp1的例子输出则不能去除emoji,因为emoji字符与单子紧紧相连,在解码的时候会因为emoji编码长度与单词不同,而将一个emoji的编码分开成两个,导致无法在emoji.UNICODE_EMOJI编码序列中识别

所以需要使用方法二

方法二

emoji.get_emoji_regexp().sub(r'', temp1.encode('utf8').decode('utf8'))

方法二可以直接对temp、temp1的情况都去除掉其中的emoji

nice
it's okay love you 
 类似资料: