热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何从文本中提取所有表情符号?

如何解决《如何从文本中提取所有表情符号?》经验,为你挑选了3个好方法。

请考虑以下列表:

a_list = ['  me así, bla es se  ds ']

如何在新列表中提取内部的所有表情符号a_list?:

new_lis = ['     ']

我试图使用正则表达式,但我没有所有可能的表情符号编码.



1> Pedro Castil..:

您可以使用该emoji库.您可以通过检查单个代码点是否包含来表示它是否是表情符号代码点emoji.UNICODE_EMOJI.

import emoji

def extract_emojis(str):
  return ''.join(c for c in str if c in emoji.UNICODE_EMOJI)



2> sheldonzy..:

我认为必须指出,先前的答案不适用于???等表情符号。,因为它包含4个表情符号,并且using ... in emoji.UNICODE_EMOJI将返回4个不同的表情符号。皮肤颜色像表情符号一样。

我的解决方案包括emojiregex模块。regex模块支持识别字素簇(以单个字符呈现的Unicode代码点序列),因此我们可以计算表情符号,例如???。

import emoji
import regex

def split_count(text):

    emoji_list = []
    data = regex.findall(r'\X', text)
    for word in data:
        if any(char in emoji.UNICODE_EMOJI for char in word):
            emoji_list.append(word)

    return emoji_list

测试(带有更多肤色的表情符号):

line = ["  me así, se  ds  hello ? emoji hello ??? how are  you today"]

counter = split_count(line[0])
print(' '.join(emoji for emoji in counter))

输出:

      ? ???   

编辑:

如果要包括标志,例如Unicode范围将来自 至 ,因此添加:

flags = regex.findall(u'[\U0001F1E6-\U0001F1FF]', text) 

到上面的功能,和return emoji_list + flags

有关这些标志的更多信息,请参见这篇文章。



3> Kasramvd..:

如果您不想使用外部库,则可以使用正则表达式和re.findall()适当的正则表达式作为Python方式来查找表情符号:

In [74]: import re
In [75]: re.findall(r'[^\w\s,]', a_list[0])
Out[75]: ['', '', '', '', '', '']

正则表达式r'[^\w\s,]'是一个否定的字符类,它与非单词字符,空格或逗号的任何字符匹配。

正如我在评论中提到的那样,文本通常包含单词字符和标点符号,通过这种方法很容易处理,对于其他情况,您可以手动将它们添加到字符类中。注意,由于可以在字符类中指定字符范围,因此甚至可以使其更短,更灵活。

另一种解决方案是使用排除字符类来排除非表情符号字符,而不是使用接受表情符号([]不带^)的字符类。由于有许多具有不同unicode值的表情符号,因此您只需将范围添加到字符类中。如果您想匹配更多表情符号,这里是一个很好的参考,其中包含所有标准表情符号以及不同表情符号的相应范围http://apps.timwhitlock.info/emoji/tables/unicode:


手动将文本中的每个非表情符号字符添加到正则表达式中,是一种可怕的,过大的,容易出错的解决方案。
推荐阅读
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • javaftp上传,javaftp下载文件
    本文目录一览:1、javaftp上传5G以上大文件,怎么做 ... [详细]
  • Swagger2非全局、无需重复输入的Head参数(Token)配置网络上关于Swagger2的教程多如牛毛,作为关于Swagger加入全 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
  • 学习笔记17:Opencv处理调整图片亮度和对比度
    一、理论基础在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式:在图像像素中其中:参数f(x)表示源图像像素。参数g(x)表示输出图像像素。 ... [详细]
author-avatar
北京草舞945share
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有