Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。
本系列将会陆续整理分享一些有趣、有用的第三方库。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_Ecosystem
pip install emoji
https://carpedm20.github.io/emoji/
emoji.version("😁")
# 输出:0.6
emoji.version(":butterfly:")
# 输出:3
emoji库的主要目的是使用 emojize() 和 demojize() 函数对 Unicode 编码和表情符号名称进行相互转换操作。
-
emoji.emojize() 函数可以将描述性文字转换回对应的表情符号。
emoji.emojize(string, delimiters,
variant, language,
version, handle_version)
-
string:包含表情符号名称的字符串。 -
delimiters:(可选)使用除_DEFAULT_DELIMITER之外的分隔符。每个分隔符应至少包含一个不属于a-zA-Z0-9以及_-&.()!?#*+,的字符。 -
variant:(可选)选择变体选择器,可选值有“base”(无变体,即None),VS-15(“text_type”)和VS-16(“emoji_type”)。 -
language:选择表情符号名称的语言,使用语言代码,如‘es’(西班牙语)、‘de’(德语)等,或使用‘alias’来使用英文别名(除大量别名外,还支持 Unicode 联盟定义的整套表情符号代码。 默认情况下,只启用官方列表,但通过 emoji.emojize(language=’alias’),可以启用完整列表和别名)。 -
version :(可选)最大版本。如果设置为某个Emoji版本,则所有高于此版本的emoji将被忽略。 -
handle_version:(可选)替换高于指定版本的emoji,而不是忽略它们。handle_version可以是一个字符串或一个可调用的对象;如果它是一个可调用的对象,则传递给它Unicode emoji和来自EMOJI_DATA的数据字典,并且它必须返回一个用于替换的字符串。
print(emoji.emojize("Python is fun :thumbsup:", language='alias'))
# 输出:Python is fun 👍
print(emoji.emojize("Python is fun :thumbs_up:"))
# 输出:Python is fun 👍
print(emoji.emojize("Python is fun {thumbs_up}", delimiters = ("{", "}")))
# 输出:Python is fun 👍
print(emoji.emojize("Python is fun :red_heart:", variant="text_type"))
# 输出:Python is fun ❤︎ (black heart)
print(emoji.emojize("Python is fun :red_heart:", variant="emoji_type"))
# 输出:Python is fun ❤️ (red heart)
# 访问某种语言的表情符号名称
emoji.config.load_language('en')
print(emoji.EMOJI_DATA['👍']['en'])
# 输出::thumbs_up:
-
emoji.demojize() 函数可以将表情符号转换为它们对应的描述性文字。
emoji.demojize(string, delimiters,
language, version, handle_version)
参数与emojize() 函数向相同。
示例代码:
print(emoji.emojize("Python is fun :thumbsup:", language='alias'))
# 输出:Python is fun :thumbs_up:
print(emoji.demojize("icode is tricky 😯", delimiters=("__", "__")))
# 输出:icode is tricky __hushed_face__
提取表情符号相关的函数主要包括以下几个函数(需要注意的是,一个表情符号可以跨越多个字符):
-
analyze() 函数用于查找字符串中的所有表情符号,并生成表情符号及其位置和关于表情符号的可用元信息:
emoji.analyze(string, non_emoji, join_emoji)
参数说明:
-
string :要分析的字符串;
-
non_emoji:是否返回非 emoji 字符列表,默认为 False。
-
join_emoji:控制非 RGI 表情符号是作为单个标记处理,还是作为多个表情符号处理,默认为 True。
list(emoji.analyze('A 🧑 pilot a 🚀'))
# 输出:[Token(chars='🧑', value=EmojiMatch(🧑, 2:3)),
# Token(chars='🚀', value=EmojiMatch(🚀, 12:13))]
# non_emoji 参数
list(emoji.analyze('A 🧑 pilot a 🚀', non_emoji=True))
# 输出:[Token(chars='A', value='A'),
# Token(chars=' ', value=' '),
# Token(chars='🧑', value=EmojiMatch(🧑, 2:3)),
# Token(chars=' ', value=' '),
# Token(chars='p', value='p'),
# Token(chars='i', value='i'),
# Token(chars='l', value='l'),
# Token(chars='o', value='o'),
# Token(chars='t', value='t'),
# Token(chars=' ', value=' '),
# Token(chars='a', value='a'),
# Token(chars=' ', value=' '),
# Token(chars='🚀', value=EmojiMatch(🚀, 12:13))]
# join_emoji 参数
list(emoji.analyze('👨👩🏿👧🏻👦🏾', join_emoji=False))
# 输出:[Token(chars='👨', value=EmojiMatch(👨, 0:1)),
# Token(chars='👩🏿', value=EmojiMatch(👩🏿, 2:4)),
# Token(chars='👧🏻', value=EmojiMatch(👧🏻, 5:7)),
# Token(chars='👦🏾', value=EmojiMatch(👦🏾, 8:10))]
# 遍历输出并获取表情符号元信息
tokens = emoji.analyze('A 🧑 pilot a 🚀')
for token in tokens:
print(token.value)
print(token.value.data)
print('---------')
# 输出:EmojiMatch(🧑, 2:3)
# {'en': ':person:', 'status': 2, 'E': 5, 'alias': [':adult:']}
# ---------
# EmojiMatch(🚀, 12:13)
# {'en': ':rocket:', 'status': 2, 'E': 0.6}
# ---------
-
emoji_list() 函数用于查找字符串中的所有表情符号及其位置:
emoji.emoji_list(string)
该函数将以 dict 列表格式返回位置和表情符号。
emoji.emoji_list('Python is 👍')
# 输出:[{'match_start': 10, 'match_end': 11, 'emoji': '👍'}]
emoji.emoji_list('An 🧑 pilot a 🚀')
# 输出:[{'match_start': 3, 'match_end': 4, 'emoji': '🧑'},
# {'match_start': 13, 'match_end': 14, 'emoji': '🚀'}]
-
distinct_emoji_list() 函数用于从字符串中获取不同的表情符号集:
emoji.distinct_emoji_list(string)
该函数将返回字符串中不同的表情符号列表。
emoji.distinct_emoji_list('An 🧑 pilot a 🚀')
# 输出:['🚀', '🧑']
-
emoji_count() 函数用于从字符串中获取表情符号的计数:
emoji.emoji_count(string, unique)
参数说明:
-
unique :(可选)是否只计算唯一的表情符号,默认为False。
返回字符串中表情符号的计数。
emoji.emoji_count('Some emoji: 🌍, 😂, 😃, 😂, 🌍, 🌦️')
# 输出:6
emoji.emoji_count('Some emoji: 🌍, 😂, 😃, 😂, 🌍, 🌦️', unique=True)
# 输出:4
-
is_emoji() 函数检查字符串/字符是否为单个表情符号:
emoji.is_emoji(string)
如果字符串是单个表情符号,且被 Unicode.org “推荐用于通用交换”,则返回 True。
emoji.is_emoji('🌍')
# 输出:True
emoji.is_emoji('🌍😂')
# 输出:False
emoji.is_emoji('test')
# 输出:False
-
purely_emoji() 函数用于检查字符串是否只包含表情符号:
emoji.purely_emoji(string)
如果字符串只包含表情符号,则返回 True。
'U0001f600ufe0f'
# 输出:'😀️'
emoji.is_emoji('U0001f600ufe0f')
# 输出:False
emoji.is_emoji('U0001f600')
# 输出:True
emoji.is_emoji('ufe0f')
# 输出:False
# 检查字符串是否只包含表情符号
emoji.purely_emoji('U0001f600ufe0f')
# 输出:True
replace_emoji() 函数用于使用自定义字符串替换 Unicode 表情符号。
emoji.replace_emoji(string, replace, version)
参数说明:
-
string:包含 Unicode 字符的字符串;
-
replace:(可选)replace 可以是字符串,也可以是可调用的字符串;如果是可调用的字符串,它将从 EMOJI_DATA 传递 Unicode emoji 和数据 dict,并必须返回一个替换字符串 ;
-
version:(可选)最大版本。 如果设置为 Emoji 版本,则只有该版本以上的 emoji 才会被替换。
示例代码:
emoji.replace_emoji('Python is 👍', replace='')
# 输出:'Python is '
emoji.replace_emoji('Python is 👍', replace='👎')
# 输出:'Python is 👎'
更多内容可以前往官方文档查看:
https://carpedm20.github.io/emoji/docs/


本篇文章来源于微信公众号: 码农设计师