emoji:处理表情的第三方库
Python 有一个非常好玩的库叫 emoji,是专门用来处理表情相关的。我们知道 Unicode 字符最高可以占 4 字节,可以表示的字符范围非常大,因此它给每个 emoji 也分配一个 Unicode 码。
peach = ord("🍑")
print(peach) # 127825
print(f"我要娶古明地觉,不好意思你在想 {chr(peach)} 吃") # 我要娶古明地觉,不好意思你在想 🍑 吃
我们看到 🍑 对应的 Unicode 码是 127825,除此之外还有很多其它的,比如:
print(chr(127811)) # 🍃
print(chr(127812)) # 🍄
print(chr(127813)) # 🍅
print(chr(127814)) # 🍆
print(chr(127815)) # 🍇
print(chr(127865)) # 🍹
对于 emoji ,它们所分配的 Unicode 码会比较大,所以想显示一个 emoji 需要 4 个字节。而 Python 字符串采用的就是 Unicode,并且一个字符串里面所有的字符占的大小都是一样的,因此当一个字符是纯 ASCII 字符,那么每个字符占一字节。但如果你又往里面加了一个 emoji,那么整体会放大四倍,因为此时每个字符都会变成 4 字节大小。当然我们这里不是探讨字符串的原理,而是想说使用 chr 和 ord 也能操作 emoji,但是显然比较麻烦,最主要的是我们不可能把这些 emoji 的 Unicode 码给记下来。
因此 emoji 就出现了,那么它怎么用呢?
import emoji
s1 = emoji.emojize("我要娶古明地觉,不好意思你在想 :peach: 吃")
print(s1) # 我要娶古明地觉,不好意思你在想 🍑 吃
s1 = emoji.emojize("我要娶古明地觉,不好意思你在想 :Peach: 吃")
print(s1) # 我要娶古明地觉,不好意思你在想 :Peach: 吃
调用 emoji.emojize 会将字符串中冒号中的内容转成 emoji,如果找不到对应的 emoji 则按照原本输出,显然这样就比较方便了。
但是有的 emoji 比较特殊,我们需要指定 use_aliases=True 才可以实现:
import emoji
print(emoji.emojize(":dromedary_camel:")) # :dromedary_camel:
print(emoji.emojize(":dromedary_camel:", use_aliases=True)) # 🐪
因此建议一律都带上 use_aliases=True 这个参数,除此之外我们看到 emoji 的周围用的是冒号,而我们也可以自己指定。
import emoji
print(emoji.emojize(":shit:", use_aliases=True)) # 💩
print(emoji.emojize("@@shit@@", use_aliases=True)) # @@shit@@
print(emoji.emojize("@@shit@@", use_aliases=True, delimiters=("@@", "@@"))) # 💩
# 通过 delimiters 指定 emoji 周围的符号,两侧可以不一样
print(emoji.emojize("@@shit__", use_aliases=True, delimiters=("@@", "@@"))) # @@shit__
print(emoji.emojize("@@shit__", use_aliases=True, delimiters=("@@", "__"))) # 💩
此外还有一个问题,就是有的 emoji 在输出的时候不带颜色:
import emoji
# 红心默认不带颜色,因此可以通过指定 variant="emoji_type" 参数
print(emoji.emojize(":heart:", use_aliases=True)) # ❤
print(emoji.emojize(":heart:", use_aliases=True, variant="emoji_type")) # ❤️
整体来说还是比较简单的,我们可以通过英文字符的方式显示 emoji,但是我们还可以将这个过程返回来。因为有些数据库不支持存储 emoji,这个是我们需要使用 emoji.deemojize。
import emoji
print(emoji.demojize("你在想 🍑 吃")) # 你在想 :peach: 吃
整体没什么难度,所有的 emoji 表情都支持,至于它们对应的英文可以去 https://www.webfx.com/tools/emoji-cheat-sheet/ 进行查看,当然像一些水果、植物、动物等等,它们的 emoji 就是对应的英文名。
import emoji
print(
emoji.emojize(":tiger: :lemon: :watermelon: :pear: :bird:", use_aliases=True, variant="emoji_type")
) # 🐯️ 🍋️ 🍉️ 🍐️ 🐦️
如果觉得文章对您有所帮助,可以请囊中羞涩的作者喝杯柠檬水,万分感谢,愿每一个来到这里的人都生活愉快,幸福美满。
微信赞赏
支付宝赞赏