从 Twitter 推文中删除 unicode 编码的表情符号
Remove unicode encoded emojis from Twitter tweet
对于一个数据科学项目,我的任务是清理我们的 Twitter 数据。这些推文包含 unicode 编码的表情符号(和其他东西),例如 \ud83d\udcf8
(相机表情符号)或 \ud83c\uddeb\ud83c\uddf7
(法国国旗)形式。
我正在使用 python-包“re”,到目前为止,我成功地删除了“简单”unicode,例如 \u201c
(双引号)和
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)
对于一个数据科学项目,我的任务是清理我们的 Twitter 数据。这些推文包含 unicode 编码的表情符号(和其他东西),例如 \ud83d\udcf8
(相机表情符号)或 \ud83c\uddeb\ud83c\uddf7
(法国国旗)形式。
我正在使用 python-包“re”,到目前为止,我成功地删除了“简单”unicode,例如 \u201c
(双引号)和
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)