如何使用单个反斜杠而不是使用encode(“unicode-escape”)的双反斜杠?

时间:2017-12-29 07:01:24

标签: python-3.x unicode

获取字符Ä的unicode点。
Python3版本。

>>> str="Ä"
>>> str.encode("unicode-escape")
b'\\xc4'

如何将单反斜杠格式b'\xc4'代替b'\\xc4'作为输出?

1 个答案:

答案 0 :(得分:0)

我并不完全清楚你想要什么,所以我会给你一些选择。

将字符的(Unicode)代码点作为整数获取:

>>> ord('Ä')
196

以十六进制表示法显示整数:

>>> hex(ord('Ä'))
'0xc4'

或字符串格式:

>>> '{:X}'.format(ord('Ä'))
'C4'

但是,你谈论反斜杠并显示bytestring b'\xc4'。 这是'Ä'的Latin-1编码(Unicode代码点低于256的所有字符都可以用Latin-1编码,并且它们的字节值等于Unicode代码点)。

>>> 'Ä'.encode('latin-1')
b'\xc4'

这是长度为1的字节串。 它以您可以键入此字符的方式显示,即。使用带有反斜杠-x和两位十六进制数的转义序列。

“unicode-escape”编解码器产生这四个ASCII字符(\xc 4),但不是str,但是作为bytes对象(因为str.encode()按定义返回bytes)。 要在str / bytes文本中获得反斜杠,您需要键入两个反斜杠,因此repr表示形式也使用两个反斜杠:

>>> 'Ä'.encode('unicode-escape')
b'\\xc4'

“unicode-escape”编解码器是特定于Python的,我没有看到很多应用程序;也许如果你想编写自己的pickle协议或解析Python源代码的片段。