You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中如何将Unicode emoji字符串转换为可显示的emoji

解决Unicode表情码转实际表情的问题

你的Emoji类目前仅对代码字符串做了简单替换,没有将其转换为对应的Unicode字符,因此输出的还是字符串形式的代码。另外注意nuevoCodigo.replace("\n", "")这行代码未生效——字符串是不可变类型,replace操作会返回新字符串,必须重新赋值给变量才会生效。

修改后的代码实现

class Emoji:
    def __init__(self, tipo, codigo):
        self.tipo = tipo
        self.codigo = self.convertirCodigo(codigo)

    def convertirCodigo(self, codigo):
        # 去除字符串两端的换行、空格等空白字符
        limpio = codigo.strip()
        # 兼容两种输入格式:"U+1F49B" 或 "U0001FA77"
        if "+" in limpio:
            hex_str = limpio.split("+")[1]
        else:
            hex_str = limpio[1:]
        # 将十六进制字符串转为整数,再转换为对应Unicode表情
        return chr(int(hex_str, 16))

    def __str__(self):
        return self.codigo

关键逻辑说明

  1. 处理输入格式:兼容带+(如U+1F49B)和不带+(如U0001FA77)的两种常见表情码格式,提取出纯十六进制字符串。
  2. 转换为Unicode字符:通过int(hex_str, 16)将十六进制字符串转为十进制整数,再用chr()函数把整数映射为对应的Unicode表情。
  3. 输出表情:__str__方法直接返回转换后的表情字符,打印Emoji实例时就会显示实际表情而非代码字符串。

测试示例

# 测试带+的格式
emoji1 = Emoji("corazon", "U+1F49B")
print(emoji1)  # 输出💛

# 测试不带+的格式
emoji2 = Emoji("carita", "U0001FA77")
print(emoji2)  # 输出🥷

内容的提问来源于stack exchange,提问作者Cristian Vega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:01:01