如何解决从 Twitter 推文中删除 unicode 编码的表情符号
对于一个数据科学项目,我的任务是清理我们的 Twitter 数据。例如,这些推文包含 \ud83d\udcf8
(相机表情符号)或 \ud83c\uddeb\ud83c\uddf7
(法国国旗)形式的 unicode 编码表情符号(和其他内容)。
我正在使用 python 包“re”,到目前为止我成功地删除了像 \u201c
(双引号)这样的“简单”unicodes
text = re.sub(u'\u201c','',text)
但是,当我尝试删除更复杂的结构时,例如
text = re.sub(u'\ud83d\udcf8',text) # remove camera emoji
text = re.sub(u'\ud83c\uddeb\ud83c\uddf7',text) # remove french flag emoji
什么都没有发生,无论我是在字符串前面加上 'u'、'r' 还是什么都不做。 Unicode 保留在字符串中。
编辑: 感谢@Shawn Shroyer 的回答,我发现
text = re.sub(u'\\ud83d\\udcf8',text)
工作正常!我只需要逃避反斜杠。现在只剩下我的第二个问题(见下文)。
第二个问题是我不想单独指定每个表情符号,而是想以更简单的方式将它们全部删除,但不删除所有 unicode 字符,因为我需要保留 \u2019
(单引号)之类的东西。
解决方法
我的建议是创建一个您想要替换的值数组,您需要通过添加另一个反斜杠或在字符串前添加“ur”来转义 \,这样反斜杠就不需要转义了。
import re
to_remove_arr = [u"\ud83d\udcf8",u"\ud83c\uddeb\ud83c\uddf7"]
pattern_str = "|".join(to_remove_arr)
text = re.sub(pattern_str,"",text)
编辑:上述解决方案将删除特定的 unicode 字符 - 删除所有非 ASCII Unicode 字符:
text = text.encode("ascii","ignore").decode()
编辑:仅删除我发现的表情符号:
def strip_emoji(text):
RE_EMOJI = re.compile(u'([\U00002600-\U000027BF])|([\U0001f300-\U0001f64F])|([\U0001f680-\U0001f6FF])')
return RE_EMOJI.sub(r'',text)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。