Python中存储Emoji Unicode码的字符串变量无法正常显示为表情符号怎么办
问题解决方法
核心错误原因
你尝试在运行时拼接反斜杠生成Unicode转义序列的思路是不成立的:Python的\U转义序列只在代码字面量解析阶段生效,运行时动态拼接的反斜杠只会被识别为普通的反斜杠字符,因此你拼接得到的\U0001f0cf本质是包含9个字符的普通字符串,不是你预期的Emoji字符。
解决方案
1. 将U000xxxx格式的编码转为对应Emoji字符
直接提取编码中的十六进制部分,转为整数后用chr()方法生成对应字符即可:
unicode_str = "U0001f0cf" # 移除前缀U,将十六进制串转为整数,再用chr生成Unicode字符 emoji = chr(int(unicode_str.removeprefix('U'), 16)) print(emoji) # 输出 🃏
注:str.removeprefix为Python3.9新增方法,低版本可替换为unicode_str[1:]直接截取第二位到末尾的内容。
2. 获取Emoji的名称
你测试的直接传入原始编码字符串的写法本身就是正确的,不需要额外拼接反斜杠:
import emojis unicode_str = "U0001f0cf" name = emojis.decode(unicode_str).replace("_"," ").replace(":","") print(name) # 输出 black joker
你之前调用emojis.decode返回结果异常,是因为你传入了自己拼接了反斜杠的错误字符串,直接传入原始的U000xxxx格式编码即可得到正确结果。
内容的提问来源于stack exchange,提问作者Clément
相关产品推荐
相关产品推荐

