Python2字符串以某种方式保存为纯Unicode

2024-06-07 03:47:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下中文字符串,它们以以下形式保存为“str”类型: \u72ec\u5230\u7528\u8272

我使用的是Python 2.7,当我打印这些字符串时,它们被打印为实际的中文字符:

chinese_list = ["\u72ec\u5230", "\u7528\u8272", "\u72ec"]
print(chinese_list[0], chinese_list[1], chinese_list[2])
>>> 独到 用色 独

我真的搞不懂它们是怎么以那种形式保存的,对我来说它看起来像Unicode。我们的目标是将我拥有的其他汉字保存在同一种编码中。假设我有一个“culture”,我需要用与原始chinese_list中相同的方式保存它们。你知道吗

我曾尝试将其编码为utf-8和其他编码,但从未获得与原始版本相同的输出:

new_string = u"国道"
print(new_string.encode("utf-8"))
# >>> b'\xe5\x9b\xbd\xe9\x81\x93'
print(new_string.encode("utf-16"))
# >>> b'\xff\xfe\xfdVS\x90'

感谢您的帮助!你知道吗

编辑:它不必有两个汉字。你知道吗

EDIT2:显然,编码是unicode-escape。谢谢@deceze。你知道吗

print(u"国".encode('unicode-escape'))
>>> \u56fd

Tags: 字符串编码newstringunicode形式listutf
1条回答
网友
1楼 · 发布于 2024-06-07 03:47:37

\u....是unicode转义语法。它的工作原理类似于\n是一个新行,而不是两个字符\n。你知道吗

列表的元素从不实际上包含一个字节字符串,其文字字符为\u7等等。它们包含一个带有实际unicode字符的unicode字符串,即等等。 请注意,这只适用于unicode字符串!在Python2中,需要编写u"\u...."。Python3总是使用unicode字符串。你知道吗

字符的unicode转义值可以通过ord内置函数获得。例如,ord(u"国")给出了22269-与0x56fd相同的值。 要获取hexadezimal转义值,请将结果转换为hex。你知道吗

>>> def escape_literal(character):
...     return r'\u' + hex(ord(character))[2:]
...
>>> print(escape_literal('国'))
\u56fd

相关问题 更多 >