python-3.x 从文本中删除所有表情符号

4szc88ey  于 2023-02-26  发布在  Python
关注(0)|答案(4)|浏览(241)

这个问题已经在这里问Python : How to remove all emojis没有解决方案,我已经作为解决方案的一步。但需要帮助完成它。
我去了,并得到了所有的表情符号十六进制代码点从emoji网站: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文字,这样我就可以使用部分的解决方案,从最后一个问题,并能够排除所有的表情符号。任何想法,我们需要得到一个解决方案?

7y4bm7vi

7y4bm7vi1#

    • 首次安装表情符号:**
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)
kx7yvsdv

kx7yvsdv2#

下面是一个Python脚本,它使用了emoji库的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)
u3r8eeie

u3r8eeie3#

安装表情符号

pip install emoji

然后简单地运行

emoji.replace_emoji(text)
ar7v8xwq

ar7v8xwq4#

在表情包的最新版本(v2.2.0)中,可以简单地使用replace_emoji方法。

!pip install emoji
import emoji

但是,必须通过replace属性指定表情符号应该替换为 * 什么 *。

text = 'I like having fun 😃'
text = emoji.replace_emoji(text, replace='')
text
>>> 'I like having fun'

否则,例如,参见@Shaked Lokits答案,表情符号将被替换为其字符串等效项:

text = 'I like having fun 👍'
text = emoji.replace_emoji(text, replace='')
text
>>> 'I like having fun :thumbs_up'

相关问题