从字符串中删除表情符号在某些情况下不起作用

Bin*_*min 4 python python-3.9

我正在处理从谷歌大查询收到的一些数据,其中数据中包含一些特殊的表情符号。我有一个删除表情符号的代码,但它不适用于以下特定表情符号。

删除所有表情符号但不适用于以下情况的示例代码。

使用版本 Python 3.9

from re import UNICODE, compile
emoji_pattern = 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=UNICODE)

# Works for this one 
data = 'support.google.co.uk/s/.'
result = emoji_pattern.subn(r'', data)
# result --> ('support.google.co.uk/s/.', 1)

# Doesn't work in this case
data = 'www.google.co.uk/?'
result = emoji_pattern.subn(r'', data)
# result --> ('www.google.co.uk/?', 0)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个案子吗?另外,如果有人可以帮助我如何检查 python 3.9 中的 Unicode 表示(任何特殊字符或表情符号),以便我可以更新表情符号模式中的此类 unicode,那将会非常有帮助。

小智 5

看看这个答案emojipython 包似乎是解决这个问题的最佳方法。

要将任何表情符号/字符转换为 UTF-8,请执行以下操作:

import emoji
s = ''
print(s.encode('unicode-escape').decode('ASCII'))
Run Code Online (Sandbox Code Playgroud)

它会打印\U0001f600