准确地删除和替换文本字符串中的emojis。

demoji的Python项目详细描述


演示

准确地从文本块中查找或删除emojis

LicensePyPIStatusPython


基本用法

demoji需要从unicode联盟的emoji code repository下载初始数据。

第一次使用包时,请调用download_codes()

>>>importdemoji>>>demoji.download_codes()Downloadingemojidata......OK(Gotresponsein0.14seconds)Writingemojidatato/Users/brad/.demoji/codes.json......OK

这将在~/.demoji/codes.json处存储Unicode十六进制符号,以备将来使用。

demoji导出两个与文本相关的函数findall()replace(),它们分别表现为re模块的findall()sub()。但是,findall()将emojis字典返回到它们的全名(描述):

>>>tweet="""\... #startspreadingthenews yankees win great start by ?? going 5strong innings with 5k’s? ?... solo homerun ?? with 2 solo homeruns and? 3run homerun… ? ?? ??‍⚖️ with rbi’s … ??... ?? and ?? to close the game??!!!….... WHAT A GAME!!..... """>>>demoji.findall(tweet){"?":"fire","?":"volcano","??\u200d⚖️":"man judge: medium skin tone","??":"Santa Claus: medium-dark skin tone","??":"flag: Mexico","?":"ogre","?":"clown face","??":"flag: Nicaragua","??":"person rowing boat: medium-light skin tone","?":"ox",}

demoji需要下载而不是预先打包Unicode表情符号数据的原因是表情符号列表本身经常更新和更改。您可以通过经常调用demoji.download_codes()定期更新本地缓存。

要拉取上次下载的日期,可以使用last_downloaded_timestamp()帮助程序:

>>>demoji.last_downloaded_timestamp()datetime.datetime(2019,2,9,7,42,24,433776,tzinfo=<demoji.UTCobjectat0x101b9ecf8>)

如果以前没有下载过代码,结果将是None

脚注:表情符号序列

许多看起来像单个unicode字符的emojis实际上是多字符序列。示例:

  • keycap 2实际上是3个字符,u+0032(ascii数字2)、u+fe0f(变量选择器)和u+20e3(组合封闭keycap2)。
  • 苏格兰的标志7个组成字符,b'\\U0001f3f4\\U000e0067\\U000e0062\\U000e0073\\U000e0063\\U000e0074\\U000e007f'用全esaped表示法。

(您可以通过s.encode("unicode-escape")看到其中任何一个)

demoji要小心处理这个问题,应该找到完整的序列,而不是它们不完整的子组件。

它这样做的方式是按长度对emoji代码进行排序,然后编译一个连接的正则表达式,该表达式将首先贪婪地搜索较长的emoji,如果找不到则返回较短的emoji。这决不是一种超级优化的搜索方式,因为它具有o(n2)属性,但重点是准确性和完整性。

>>>frompprintimportpprint>>>seq="""\... I bet you didn't know that ?, ?‍♂️, and ?‍♀️ are three different emojis.... """>>>pprint(seq.encode('unicode-escape'))# Python 3(b"I bet you didn't know that \\U0001f64b, \\U0001f64b\\u200d\\u2642\\ufe0f,"b' and \\U0001f64b\\u200d\\u2640\\ufe0f are three different emojis.\\n')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaPax考试:从非标准Maven存储库解析Karaf特性存储库(XML文件)   java Spring启动Bean创建异常   java中将ArrayList转换为数组的方法   Android Studio的java Unity插件。   java在CheckStyle中从方法计数中排除getter和setter   HibernateJava。sql。SQLSyntaxErrorException:表/视图“序列”不存在   与命令行程序Java vs C通信   java WebView膨胀异常   java在O(n)java8流中寻找两个列表的交集   java使用Gradle运行单元测试时,最大堆大小在哪里设置?   ssl加载java应用程序(CXF)内的jks文件   CI:Jenkins Git:Simple Java项目:希望在特定时间在脚本上发送消息   java根据位置更改数字   java按数值排序字符串数组   macos java版本“1.6.0_65”是否与java 6模棱两可?   Cassandra中的java时间戳