为什么只有一些 CLDR 短名称在 python 中有效?

Why do only some CLDR Short Names work in python?

我想在 discord 机器人上添加反应,但只有我的一些 Emoji CLDR 简称有效。

例如:

如果我使用 '\N{grinning face}' 它有效,但是 '\N{thumbs up}' 无效。相反,它显示此消息:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-15: unknown Unicode character name

'\N{green heart}''\N{red heart}'

我在 unicode.org 页面上查找了 CLDR 简称;他们只是错了还是别的原因?

Escape sequence \N{name} = Character named name in the Unicode database。使用

'\N{thumbs up sign}'
''

请注意,上面提到的 link 是最后一个 Unicode 版本(我认为目前是 13.0),而您的 Python 可以使用另一个:

import unicodedata
unicodedata.unidata_version
'12.1.0'

仅供参考,使用 "\bheart\b" 正则表达式摘自上述 UnicodeData.txt 给出以下内容:

Char CodePoint Description
---- --------- -----------
   ☙ U+2619    Reversed Rotated Floral Heart Bullet
   ♡ U+2661    White Heart Suit
   ♥ U+2665    Black Heart Suit
   ❣ U+2763    Heavy Heart Exclamation Mark Ornament
   ❤ U+2764    Heavy Black Heart
   ❥ U+2765    Rotated Heavy Black Heart Bullet
   ❦ U+2766    Floral Heart
   ❧ U+2767    Rotated Floral Heart Bullet
   ⺖ U+2E96    CJK Radical Heart One
   ⺗ U+2E97    CJK Radical Heart Two
   ⼼ U+2F3C    Kangxi Radical Heart
   U+1F394   HEART WITH TIP ON THE LEFT
   U+1F491   COUPLE WITH HEART
   U+1F493   BEATING HEART
   U+1F494   BROKEN HEART
   U+1F496   SPARKLING HEART
   U+1F497   GROWING HEART
   U+1F498   HEART WITH ARROW
   U+1F499   BLUE HEART
   U+1F49A   GREEN HEART
   U+1F49B   YELLOW HEART
   U+1F49C   PURPLE HEART
   U+1F49D   HEART WITH RIBBON
   U+1F49F   HEART DECORATION
   U+1F5A4   BLACK HEART
   U+1F60D   SMILING FACE WITH HEART-SHAPED EYES
   U+1F63B   SMILING CAT FACE WITH HEART-SHAPED EYES
   U+1F90D   WHITE HEART
   U+1F90E   BROWN HEART
   U+1F9E1   ORANGE HEART
   U+1FAC0   ANATOMICAL HEART