为什么我们在 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
表示相同的字符,该表示法只能用于不超过 \0xFF
的字符。
对于某些字符,甚至还有单字母转义符,例如 \n
换行符,或 \t
制表符。
出于历史和实际原因,Python 有多种表示法选项。在 byte string 中,您只能创建 0 - 255 范围内的字节,因此 \xhh
比使用 \U000hhhhh
更有用且更简洁code> 到处都是,当你甚至不能使用该符号可用的全部范围时,\xhh
和 \n
和相关代码对于其他语言的程序员来说是熟悉的。
关于字符串编码中的 Python-3 和\x Vs\u Vs\U 以及原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132917/