删除简单的表情符号python

时间:2018-03-20 09:19:30

标签: python emoji

如何删除文本中的表情符号,如下所示:

'ca va toi ;-) ?'

我使用了很多关于删除表情符号的解决方案,但没有任何效果。 我想要这样的输出:

ca va toi ?

我不想删除标点符号,只删除那些形成表情符号的标点符号。 感谢

2 个答案:

答案 0 :(得分:2)

一种简单的方法是指定可能的表情符号列表。

emoji_list = [";-)", ":)"]

然后删除字符串中出现的那些字符串。

# A dictionary with your emojis or any combination of characters you want to get rid of.
emoji_list = [";-)", ":)"]

# Your input string
string = 'ca va :) toi ;-) ?'

# Split the string into a list of substrings.
string_list = string.split()

# Using list comprehension, create a new list that excludes the emoji_list items.
clear_string = [string for string in string_list if string not in emoji_list]

# ALTERNATIVE a cleaner way is to use higher-order function filter to filter out the emojis.
clear_string = filter(lambda x: x not in emoji_list, string_list)

# Join the list into a string again.
output = " ".join(clear_string)

print(output)

您可以使用python中的列表推导来创建一个排除emoji_list中定义的子串的列表。另一种方法是使用高阶函数filter来过滤掉那些表情符号。

然后,您将获得一个新列表,该列表排除了您在emoji_list中定义的子字符串,然后您只需将列表加入字符串即可获得所需的结果。

注意:这是一种非常简单的方法,可以很容易地返回误报(即被视为表情符号的子字符串,实际上并非如此)。这个解决方案不包括这些假设或案例。

答案 1 :(得分:1)

以下内容适合您。您可以添加其他规则以使其更好地概括。

x = 'ca va toi ;-) ?'

x = x.replace(';-)', '')
x = x.replace(';-(', '')
x = x.replace(';-|', '')
x = x.replace(';-D', '')
  

' ca va toi?'

如果您想清除所有标点符号,也可以执行以下操作

x = 'ca va toi ;-) ?'

''.join([i for i in x if (i >= 'a' and i<='z') or (i >= 'A' and i<='Z') or i == ' ')
  

&#39; ca va toi&#39;