栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在python中使用re删除unicode表情符号

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在python中使用re删除unicode表情符号

您未对非BMP unipre点使用正确的符号;您要使用

U0001FFFF
大写
U
和8位数字:

myre = re.compile(u'['    u'U0001F300-U0001F5FF'    u'U0001F600-U0001F64F'    u'U0001F680-U0001F6FF'    u'u2600-u26FFu2700-u27BF]+',     re.UNICODE)

可以简化为:

myre = re.compile(u'['    u'U0001F300-U0001F64F'    u'U0001F680-U0001F6FF'    u'u2600-u26FFu2700-u27BF]+',     re.UNICODE)

因为您的前两个范围是相邻的。

您的版本正在指定(增加了可读性的空格):

[u1F30 0-u1F5F Fu1F60 0-u1F64 Fu1F68 0-u1F6F F u2600-u26FFu2700-u27BF]+

这是因为

uxxxx
转义序列始终仅使用4个十六进制数字,而不是5。

这些范围中最大的范围是

0-u1F6F
(因此,从数字
0
),它涵盖了Unipre标准的
很大 范围。

如果您使用UCS-4宽的Python可执行文件,则更正后的表达式将起作用:

>>> import re>>> myre = re.compile(u'['...     u'U0001F300-U0001F64F'...     u'U0001F680-U0001F6FF'...     u'u2600-u26FFu2700-u27BF]+', ...     re.UNICODE)>>> myre.sub('', u'Some example text with a sleepy face: U0001f62a')u'Some example text with a sleepy face: '

UCS-2等效项是:

myre = re.compile(u'('    u'ud83c[udf00-udfff]|'    u'ud83d[udc00-ude4fude80-udeff]|'    u'[u2600-u26FFu2700-u27BF])+',     re.UNICODE)

您可以使用异常处理程序将两者结合到脚本中:

try:    # Wide UCS-4 build    myre = re.compile(u'['        u'U0001F300-U0001F64F'        u'U0001F680-U0001F6FF'        u'u2600-u26FFu2700-u27BF]+',         re.UNICODE)except re.error:    # Narrow UCS-2 build    myre = re.compile(u'('        u'ud83c[udf00-udfff]|'        u'ud83d[udc00-ude4fude80-udeff]|'        u'[u2600-u26FFu2700-u27BF])+',         re.UNICODE)

当然,正则表达式已经过时了,因为它不包括在较新的Unipre版本中定义的Emoji。它似乎涵盖了Emoji定义的Unipre 8.0(因为Unipre
9.0中添加了U + 1F91D HANDSHAKE)。

如果您需要最新的正则表达式,请从积极尝试使Emoji保持最新状态的软件包中获取一个;它特别支持生成这样的正则表达式:

import emojidef remove_emoji(text):    return emoji.get_emoji_regexp().sub(u'', text)

该软件包当前是Unipre 11.0的最新版本,并具有可以快速更新到将来发行版的基础结构。您的项目要做的就是在有新版本时进行升级。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637761.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号