【问题标题】:How to get single backslash instead of double backslash with encode("unicode-escape")?如何使用编码(“unicode-escape”)获得单反斜杠而不是双反斜杠?
【发布时间】:2017-12-29 07:01:24
【问题描述】:

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

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

如何获得单个反斜杠格式 b'\xc4' 而不是 b'\\xc4' 作为我的输出?

【问题讨论】:

    标签: python-3.x unicode


    【解决方案1】:

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

    以整数形式获取字符的 (Unicode) 代码点:

    >>> ord('Ä')
    196
    

    以十六进制显示整数:

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

    或使用字符串格式:

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

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

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

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

    “unicode-escape”编解码器产生这四个 ASCII 字符(\xc4),但不是作为str,而是作为bytes 对象(因为@987654333 @ 根据定义返回 bytes)。 要在 str/bytes 文字中获得反斜杠,您需要键入两个反斜杠,因此 representation 表单也使用两个反斜杠:

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-29
      • 2010-12-14
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多