Python-3 和 \x Vs \u Vs \U 在字符串编码中以及为什么
Python-3 and \x Vs \u Vs \U in string encoding and why
为什么我们在 Python 3 中有不同的面向字节的字符串表示?单一表示而不是多个表示是否足够?
对于 ASCII 范围编号打印字符串显示以 \x
:
开头的序列
In [56]: chr(128)
Out[56]: '\x80'
在不同的数字范围内,它 Python 使用以 \u
开头的序列
In [57]: chr(57344)
Out[57]: '\ue000'
但是最高范围内的数字,即目前最大的 Unicode 数字,它使用前导 \U
:
In [58]: chr(1114111)
Out[58]: '\U0010ffff'
Python 为您提供了字符串的表示形式,对于不可打印的字符,将使用 最短的可用转义序列 。
\x80
与 \u0080
或 \U00000080
是相同的字符,但 \x80
只是更短。对于chr(57344)
,最短的表示法是\ue000
,不能用\xhh
表示相同的字符,该表示法只能用于[=17=]xFF
.[=24以下的字符=]
有些字符甚至有单字母转义,例如 \n
换行符,或 \t
制表符。
由于历史和实际原因,Python 有多个符号选项。在 byte string 中,您只能创建 0 - 255 范围内的字节,因此 \xhh
比在任何地方都必须使用 \U000hhhhh
更有帮助且更简洁甚至不能使用该符号可用的全部范围,并且 \xhh
和 \n
以及相关代码对于其他语言的程序员来说很熟悉。
为什么我们在 Python 3 中有不同的面向字节的字符串表示?单一表示而不是多个表示是否足够?
对于 ASCII 范围编号打印字符串显示以 \x
:
In [56]: chr(128)
Out[56]: '\x80'
在不同的数字范围内,它 Python 使用以 \u
In [57]: chr(57344)
Out[57]: '\ue000'
但是最高范围内的数字,即目前最大的 Unicode 数字,它使用前导 \U
:
In [58]: chr(1114111)
Out[58]: '\U0010ffff'
Python 为您提供了字符串的表示形式,对于不可打印的字符,将使用 最短的可用转义序列 。
\x80
与 \u0080
或 \U00000080
是相同的字符,但 \x80
只是更短。对于chr(57344)
,最短的表示法是\ue000
,不能用\xhh
表示相同的字符,该表示法只能用于[=17=]xFF
.[=24以下的字符=]
有些字符甚至有单字母转义,例如 \n
换行符,或 \t
制表符。
Python 有多个符号选项。在 byte string 中,您只能创建 0 - 255 范围内的字节,因此 \xhh
比在任何地方都必须使用 \U000hhhhh
更有帮助且更简洁甚至不能使用该符号可用的全部范围,并且 \xhh
和 \n
以及相关代码对于其他语言的程序员来说很熟悉。