【发布时间】:2018-09-10 18:40:19
【问题描述】:
我在 python3 中有一个字符串,其中包含表情符号,我想将表情符号视为它们的 unicode 表示。我需要对这种格式的表情符号进行一些操作。
s = '???? ???? hello'
这会将每个表情符号视为自己的字符,例如 len(s) == 9 && s[0] == ????
我想更改字符串的格式,使其位于 unicode 点中,这样
s = '???? ???? hello'
u = to_unicode(s) # Some function to change the format.
print(u) # '\ud83d\ude2c \ud83d\ude0e hello'
u[0] == '\ud83d' and u[1] == '\ude2c'
len(u) == 11
关于创建一个函数to_unicode 需要 s 并将其更改为 u 有什么想法吗?我可能正在考虑字符串/unicode 在 python3 中的工作方式错误,因此任何帮助/更正将不胜感激。
【问题讨论】:
-
称它为
as_surrogates()而不是to_unicode()因为'\U0001f60e' == '????'即'????'已经是一个单一的Unicode 代码点。'\ud83d\ude0e'是一个代理对,它是表示相同 Unicode 字符的一种不足方式。如果某些 API 不理解非 BMP Unicode 字符(例如许多表情符号),您可能需要它。通常,您想要相反,即将代理对转换为相应的 Unicode 字符:'\ud83d\ude0e'.encode('utf-16', 'surrogatepass').decode('utf-16') == '\U0001f60e' -
是的,
to_unicode()具有误导性。as_surrogates()对 unicode 类型之间的这种转换更有意义。
标签: python-3.x unicode emoji