在 python 中保留表情符号的 unicode
Preserve unicode of emojis in python
我正在处理 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'
unicode_escape
编解码器将 ASCII 字符显示为字符,仅将非 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'
我正在处理 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'
unicode_escape
编解码器将 ASCII 字符显示为字符,仅将非 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'