Python中列表追加含Emoji句子时保留Emoji而非转Unicode的问题
解决Python拆分含新Emoji字符串时的Unicode转义显示问题
问题本质
你看到的\U0001faf0🏻只是Python打印列表对象时的转义表示,实际字符串中的Emoji是正常存储的——Python的repr()方法(列表打印时会调用元素的repr)会把非ASCII字符转成Unicode转义序列,但元素本身的真实值并没有被改变。
验证真实内容
直接打印列表中的Emoji元素,而不是打印整个列表,就能看到正常的Emoji:
original_str = 'I am having positive vibe 🫰🏻🫰🏻🫰🏻🫰🏻🫰🏻' split_list = original_str.split() print(split_list[-1]) # 输出:🫰🏻🫰🏻🫰🏻🫰🏻🫰🏻
处理转义序列还原(如果确实需要)
如果是从保存的转义字符串(比如读取文件得到的\U0001faf0🏻文本)还原Emoji,按以下步骤操作:
- 确保
emoji库是最新版本(新Emoji需要最新支持):pip install --upgrade emoji - 先解码Unicode转义序列,再处理肤色修饰符:
import emoji # 假设你拿到的是转义后的字符串 escaped_emoji_str = r'\U0001faf0\U0001f3fb\U0001faf0\U0001f3fb' # 解码转义序列 decoded_str = escaped_emoji_str.encode('utf-8').decode('unicode_escape') # 用emoji库确保渲染正确(可选,针对极端情况) rendered_emoji = emoji.emojize(decoded_str, use_aliases=False) print(rendered_emoji) # 输出:🫰🏻🫰🏻
注意事项
- 拆分字符串时用原生
str.split()不会破坏Emoji,因为Emoji是单个Unicode字符(带肤色修饰符的是组合字符,但split会把整个组合当成一个单元)。 - 不要用
string.encode()直接处理,这会导致编码混乱,应该用Unicode转义解码的方式。
内容的提问来源于stack exchange,提问作者Rakhi
相关产品推荐
相关产品推荐

