【发布时间】:2019-01-17 23:28:44
【问题描述】:
我正在尝试从 Unicode 文本中删除 just 表情符号。我尝试了各种方法described in another Stack Overflow post,但这些方法都没有完全删除所有表情符号/笑脸。例如:
解决方案 1:
def remove_emoji(self, string):
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"\U00002702-\U000027B0"
u"\U000024C2-\U0001F251"
"]+", flags=re.UNICODE)
return emoji_pattern.sub(r'', string)
留在 ????在以下示例中:
Input: తెలంగాణ రియల్ ఎస్టేట్ ????????
Output: తెలంగాణ రియల్ ఎస్టేట్ ????
另一个尝试,解决方案2:
def deEmojify(self, inputString):
returnString = ""
for character in inputString:
try:
character.encode("ascii")
returnString += character
except UnicodeEncodeError:
returnString += ''
return returnString
导致删除任何非英文字符:
Input: ????Testరియల్ ఎస్టేట్ A.P&T.S. ????????????????
Output: Test A.P&T.S.
它不仅删除了所有表情符号,还删除了非英文字符,因为character.encode("ascii");我的非英语输入无法编码为 ASCII。
有没有办法从国际 Unicode 文本中正确删除表情符号?
【问题讨论】:
-
新的表情符号会定期添加到 Unicode 标准中;您需要不断更新这些正则表达式。
-
第一个示例中留下的表情符号是 U+1F91D,added in Unicode 9.0。而Unicode 10.0 和Unicode 11.0 再次扩大了名单。我确定 12.0 版需要更多更新。
-
谢谢,我会记住的。
标签: python regex string unicode emoji