首页 > 解决方案 > 在python中保留表情符号的unicode

问题描述

我正在处理 emojis Unicode 并想用相应的 Unicode 保存图像,1F636_200D_1F32B_FE0F例如https://emojipedia.org/face-in-clouds/

但是对于https://emojipedia.org/keycap-digit-one/文件结束了1_FE0F_20E3,我需要它们0031_FE0F_20E3有没有办法告诉编码器不解析1

>>> '1️⃣'.encode('unicode-escape').decode('ascii')
'1\\ufe0f\\u20e3'

标签: pythonunicode

解决方案


编解码器将unicode_escapeASCII 字符显示为字符,仅将非 ASCII 字符显示为转义码。如果你想全部成为转义码,你必须格式化自己:

>>> ''.join([f'\\u{ord(c):04x}' if ord(c) < 0x10000 else f'\\U{ord(c):08x}' for c in '‍️'])
'\\U0001f636\\u200d\\U0001f32b\\ufe0f'
>>> ''.join([f'\\u{ord(c):04x}' if ord(c) < 0x10000 else f'\\U{ord(c):08x}' for c in '1️⃣'])
'\\u0031\\ufe0f\\u20e3'

或者,也许你想要这种格式?

>>> '_'.join([f'{ord(c):04X}' for c in '1️⃣'])
'0031_FE0F_20E3'
>>> '_'.join([f'{ord(c):04X}' for c in '‍️'])
'1F636_200D_1F32B_FE0F'

推荐阅读