字符串编码中的 Python-3 和\x Vs\u Vs\U 以及原因

标签 python python-3.x unicode python-unicode unicode-string

为什么我们在 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/

相关文章:

python - 如何检查字符串是否包含 Python 列表中的任意 3 个元素

python - 如何在 8G DDR3 RAM 中托管大型列表?

python - 如何从元组列表中提取模式元组?

mysql - MySQL Regexp 是否支持 Unicode 匹配

python - 通过 python 接口(interface)传递 cython 函数

python - 使用Python获取语法错误

python - 如何抓取网页中并排放置的两个表的数据?

功能键的 Java 字符表示?

python - 从 unicode 字符串中删除选定的标点符号

python - scrapy startproject不使用指定的TEMPLATES_DIR来生成项目settings.py