用python将字符串中的表情(微信表情 [ ])和普通文本拆分开来

2024-02-23 12:48

本文主要是介绍用python将字符串中的表情(微信表情 [ ])和普通文本拆分开来,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有一堆包含表情(微信表情)的文本,要计算情绪量。
表情和普通文本需要分开命中情绪词典。
这里解决的是将字符串中的表情和普通文本拆分开来的问题。
有两种方法:

  1. 用正则表达式查找和移除表情
  2. 用表情分隔符 ‘[’ 和 ‘]’ 将文本拆开,然后合并
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 19 16:37:54 2020@author: weisssun
"""#有一段包含表情的字符串,要将表情和文本拆分#————————————————————————————————————————————
#第一个思路是用正则表达式直接查找#正则表达式查找方法:
#import re
#pattern = re.compile('正则表达式')
#text = '一段字符串'
#result = pattern.findall(text)#表情的正则表达式:
#emojis = re.compile(r'\[.\]|\[..\]|\[...\]|\[....\]')
#参考链接:https://zhuanlan.zhihu.com/p/110912040import recontent = 'BGM好好听[皱眉][皱眉][皱眉][皱眉]又骗我买香水[傲慢]我期待邂逅[傲慢][笑中带泪]'
#content是需要拆分的字符串emoji_pattern = re.compile(r'\[.\]|\[..\]|\[...\]|\[....\]')
#定义表情的正则表达式方法emojis = emoji_pattern.findall(content)
#从字符串中查找所有符合表情格式的内容
print(emojis)
#输出的是字符串列表
#['[皱眉]', '[皱眉]', '[皱眉]', '[皱眉]', '[傲慢]', '[傲慢]', '[笑中带泪]']text = emoji_pattern.sub('', content)
#将表情移除,剩下的是文本
print(text)
#输出的是字符串#——————————————————————————————————————————————
#第二个是使用 '[' 和 ']' 拆分文本的思路
#学习其他人的代码,有两个地方不明白import copycontent = '啊[皱眉][皱眉][皱眉][皱眉]又骗我买香水[傲慢]我期待邂逅[傲慢][笑中带泪]'
emojilist = []first_emoji_pos = content.find('[')
#找到字符串中第一个 emoji表情 的位置pieces = content.split('[')
#将字符串用 '[' 分割开来,分成多个碎片
#输出的是字符串列表,列表中的每个元素是一个碎片
#表情现在在单个碎片的最前方,如: 傲慢]我期待邂逅红色的毛爷爷
#一个碎片里只会有一个表情text = pieces[0]
#pieces[0] 是第一个表情的 '[' 之前的文本
#如果前面没有文本,pieces[0] 就是空字符串for piece in pieces:
#挨个处理每个碎片emoji_pos_r = piece.find(']')#找到碎片中 ']' 的位置#碎片中的 ']' 是表情和文本分分界线#print(emoji_pos_r),为啥第一个是-1呢?不理解if emoji_pos_r >= 0:text = text + piece[(emoji_pos_r + 1):]#piece[(emoji_pos_r + 1):] 是单个碎片中 ']' 之后的文本#将第一个 '[' 之前的文本,和每个碎片 ']' 之后的文本合并起来#最终得到字符串中所有的文本emoji = '[' + piece[:emoji_pos_r] + ']'#piece[:emoji_pos_r] 是单个碎片中 ']' 之前的内容,也就是表情#给表情前后加上 '[' 和 ']', 得到单个碎片中表情的完整版emojilist.append(copy.deepcopy(emoji))#将每个碎片里的表情拷贝后添加到列表中#这里为什么要用deepcopy呢?可能是为了避免某种错误? 
print(text)
#字符串中的文本
print(emojilist)
#字符串中的表情

这篇关于用python将字符串中的表情(微信表情 [ ])和普通文本拆分开来的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/738683

相关文章

Python多重继承慎用的地方

《Python多重继承慎用的地方》多重继承也可能导致一些问题,本文主要介绍了Python多重继承慎用的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录前言多重继承要慎用Mixin模式最后前言在python中,多重继承是一种强大的功能,它允许一个

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

Java调用Python的四种方法小结

《Java调用Python的四种方法小结》在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果,本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法,希望对大家有... 目录一、在Java类中直接执行python语句二、在Java中直接调用Python脚本三、使用Run

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp