【问题标题】:Remove emoji flags from text in Python从 Python 中的文本中删除表情符号
【发布时间】:2017-10-09 19:56:20
【问题描述】:

我正在尝试删除所有表情符号,包括澳门的表情符号 ????????来自我的 Python 字符串。我已经尝试了来自表情符号库的几个标准正则表达式和正则表达式,但没有成功删除它。 我的代码:

def remove_emoji(text):
    emoji_pattern = re.compile(
        u"(\ud83d[\ude00-\ude4f])|"  # emoticons
        u"(\ud83c[\udf00-\uffff])|"  # symbols & pictographs (1 of 2)
        u"(\ud83d[\u0000-\uddff])|"  # symbols & pictographs (2 of 2)
        u"(\ud83d[\ude80-\udeff])|"  # transport & map symbols
        u"(\ud83c[\udde0-\uddff])"  # flags (iOS)
        "+", flags=re.UNICODE)
    return emoji_pattern.sub('', text)

【问题讨论】:

  • 只是出于好奇,您可能是从 Python 2 移植这段代码吗?

标签: python python-3.x unicode emoji python-unicode


【解决方案1】:

您的图案似乎没有表明您所针对的标志表情符号(可能还有其他字形)。

例如,删除标志:

def remove_emoji(text):
    emoji_pattern = re.compile(
        u'(\U0001F1F2\U0001F1F4)|'       # Macau flag
        u'([\U0001F1E6-\U0001F1FF]{2})|' # flags
        u'([\U0001F600-\U0001F64F])'     # emoticons
        "+", flags=re.UNICODE)

    return emoji_pattern.sub('', text)

注意大写 U (\U) 转义表示 32 位十六进制值。标志和表情符号在高 Unicode 值中方式。此外,标志似乎特别复杂,因为它们是两个代码点的组合。一旦您找到了正确的目标字符(如澳门标志所示),您就可以使用字符集进行扩展(此处使用Regional Indicator Symbols 的所有对的表达式进行演示。

您还可以开始重新添加其他表情符号和符号的描述;这里以基本表情块为例。

如上定义:

flag = '\U0001F1F2\U0001F1F4'
emote = '\U0001F620'
​
print("flag: {!r} gone: {!r}".format(flag, remove_emoji(flag)))
print("emote: {!r} gone: {!r}".format(emote, remove_emoji(emote)))

产量:

flag: '??' gone: ''
emote: '?' gone: ''

您可以使用您想要定位的其他块进一步扩展它。我建议您单独查找它们,寻找 32 位表示法。请注意,您会经常看到它们写成U+1Fxyz;对于 Python,这些需要重述为 \U0001Fxyz。如果要删除所有符号(“所有表情符号”),可以使用广泛的字符集。但是,如果您想要精确并仅删除一组有限的符号,则需要小心。您要定位的一组表情包,例如Transport and Map Symbols,包含五个独立的范围,在整个表情符号组上都有重叠。

【讨论】:

    【解决方案2】:

    这听起来有点像自我推销,但我有一个 Python 库可以做到这一点(除其他外)。图书馆是cucco,基本上你会做这样的事情:

    from cucco import Cucco
    cucco = Cucco()
    cucco.replace_emojis('Your text')
    

    不确定这是否适合您,但如果您可以尝试一下并告诉我结果,那就太好了。我总是乐于接受反馈,因此我可以改进图书馆;)

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 2021-03-14
      • 2019-01-17
      • 2017-08-23
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多