Siy*_*new 4 python python-3.x emoji
我想使用Python 3 is_emoji
检查字符串是否只包含一个表情符号.例如,有一个函数检查字符串是否只有一个表情符号.
def is_emoji(s):
pass
is_emoji("") #True
is_emoji("??") #False
Run Code Online (Sandbox Code Playgroud)
我尝试使用正则表达式但emojis没有固定长度.例如:
print(len("??".encode("utf-8"))) # 6
print(len("".encode("utf-8"))) # 4
Run Code Online (Sandbox Code Playgroud)
Dun*_*nes 10
您可以尝试使用此表情符号包.它主要用于将转义序列转换为unicode表情符号,但结果它包含一个最新的表情符号列表.
from emoji import UNICODE_EMOJI
def is_emoji(s):
return s in UNICODE_EMOJI
Run Code Online (Sandbox Code Playgroud)
但是有一些复杂情况,因为有时两个unicode代码点可以映射到一个可打印的字形.例如,人类表情符号后跟"表情符号修饰符fitzpatrick类型"应该修改前面表情符号的颜色; 并且由"零宽度木匠"分隔的某些表情符号应该被视为单个字符.
这适用于 Python 3:
def is_emoji(s):
emojis = "??" # add more emojis here
count = 0
for emoji in emojis:
count += s.count(emoji)
if count > 1:
return False
return bool(count)
Run Code Online (Sandbox Code Playgroud)
测试:
>>> is_emoji("")
True
>>> is_emoji('?')
True
>>> is_emoji("??")
False
Run Code Online (Sandbox Code Playgroud)
结合 Dunes 的回答,避免输入所有表情符号:
from emoji import UNICODE_EMOJI
def is_emoji(s):
count = 0
for emoji in UNICODE_EMOJI:
count += s.count(emoji)
if count > 1:
return False
return bool(count)
Run Code Online (Sandbox Code Playgroud)
这并不可怕,因为UNICODE_EMOJI
包含近 1330 个项目,但它有效。
归档时间: |
|
查看次数: |
10039 次 |
最近记录: |