字符串变量中表情符号的Unicode不会显示为表情符号

2024-10-03 19:21:21 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,对不起,我的英语很差

我正在尝试编写一个Python脚本,它应该检索一个变量,该变量将表示对应于表情符号(U000xxxx)的unicode代码。 这部分程序的最终目标是将unicode翻译成表情符号

因为我知道在Python中显示表情符号是print("\U000XXXXX") ,因此我在前面的名称之前添加了\。 但当我打印时,最终渲染不是预期的效果

unicode = "U0001f0cf"
unicode = (f"\{unicode}") #OR# unicode = "\%s" %unicode
print (unicode) #>>> \U0001f0cf
#Expected >>> 🃏

我尝试了很多方法,包括.encode(),但是Python告诉我我不能在bytes类型的对象上使用字符串模式(?)

这是造成我问题的部分,整个过程的其余部分都可以。。。 为了从unicode翻译表情符号的名称,我找到了这个方法(由另一个Stackoverflow主题制作)

name = emojis.decode(unicode).replace("_"," ").replace(":","")
print(name) #>>> \U0001f0cf

然而,如果我直接输入unicode代码,它会工作

name = emojis.decode("U0001f0cf").replace("_"," ").replace(":","")
print(name) #>>> :black_joker:

非常感谢任何愿意帮助我的人, 晚上好


Tags: 方法代码name程序脚本名称unicodereplace
3条回答
unicode = "U0001f0cf"
unicode = (f"\{unicode}")

print(unicode.encode('raw-unicode-escape').decode('unicode-escape'))

这将为您提供🃏而不是\U0001f0cf

您对反斜杠的含义感到困惑。在Python源代码中,"\U0001f0cf"对字符串中的单个字符进行编码。不能通过在前面添加反斜杠将九个字符的字符串"U0001f0cf"转换为单个字符,更不能通过在"n"前面连接文字反斜杠将其转换为换行符

可以轻松地做的是删除U并通过chr()将该十六进制数转换为一个字符

unicode = "U0001f0cf"
print(chr(int(unicode[1:], 16)))

int("string", base)string转换为指定base中的数字

首先从变量中获取数字部分,然后使用chr()将其转换为等效的Unicode,然后使用unicodedata数据库获取其名称:

import unicodedata as ud

u = 'U0001f0cf'
i = int(u[1:],16)
c = chr(i)
n = ud.name(c)
print(c,n)

输出:

🃏 PLAYING CARD BLACK JOKER

您还可以使用范围循环来显示一些表情符号:

import unicodedata as ud

for i in range(0x1f0c1,0x1f0d0):
    c = chr(i)
    n = ud.name(c)
    print(c,n)

输出:

🃁 PLAYING CARD ACE OF DIAMONDS
🃂 PLAYING CARD TWO OF DIAMONDS
🃃 PLAYING CARD THREE OF DIAMONDS
🃄 PLAYING CARD FOUR OF DIAMONDS
🃅 PLAYING CARD FIVE OF DIAMONDS
🃆 PLAYING CARD SIX OF DIAMONDS
🃇 PLAYING CARD SEVEN OF DIAMONDS
🃈 PLAYING CARD EIGHT OF DIAMONDS
🃉 PLAYING CARD NINE OF DIAMONDS
🃊 PLAYING CARD TEN OF DIAMONDS
🃋 PLAYING CARD JACK OF DIAMONDS
🃌 PLAYING CARD KNIGHT OF DIAMONDS
🃍 PLAYING CARD QUEEN OF DIAMONDS
🃎 PLAYING CARD KING OF DIAMONDS
🃏 PLAYING CARD BLACK JOKER

相关问题 更多 >