ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python入门--转义字符与原字符r ,字符集,字符编码

Python入门--转义字符与原字符r ,字符集,字符编码 目录转义字符原字符r/R字符集字符编码\x?? 是什么意思\x 表示十六进制hex数值。后面的 ?? 是 两位十六进制数字。每两位十六进制 8 位二进制 1 个字节Python bytes 对象的最小单位是 字节。所以\x 2 位一组2位16进制1个字节字节串本质上就是二进制序列。为什么要用字节串字符串编码为 unicode转义数字。直接用unicode数字字符串表示字符(即字符集是如何用数字表示字符的规范直接用对应的数字表示了)用16进制的字符串 来表示这个字节串python字节串是人类友好的格式。可显示的ascii字符直接显示。否则用16进制表示(\x??)字节串占多少字节\x后面必须紧跟2个16进制数字这2个16进制表示1个字节.\x后面如果超过2个16进制数字其余的会当作普通字符处理转义字符原字符r/R#什么是转义字符 #就是反斜杠\想要实现的转义功能的首字母 #为什么需要转义字符 #当字符串中包含反斜杠单引号和双引号等特殊用途的字符时必须使用反斜杠对这些字符进行转义(转换一个含义) #反斜杠\\ #单引号\ #双引号\ #当字符串中包含换行回车水平制表符或退格等无法直接表示的字符时也可以使用转义字符 #换行\n(newline) #回车\r(return) #水平制表符\t(tab) #退格\b(backspace) print(hello\nworld)#\转义功能的首字母 n--newline的首字母表示换行 print(hello\tworld) print(hello\rworld)#return光标移到本行开头 world把hello覆盖了 print(hello\bworld)#退一格把o退没了 print(http:\\www.baidu.com) print(http:\\\\www.baidu.com) print(老师好我叫\zjx\) #原字符不希望字符串中的转义字符起作用就是用原字符就是在字符串前加上r或R print(rhello\nworld) #注意事项最后一个字符不能是一个反斜线 #错误语句print(rhello\nworld\) print(rhello\nworld\\)字符集字符编码 - 白月黑羽字符集就是用用不同的数字来代表不同的文字。用数字来代表不同的语言符号。用数字表示字符的映射关系。ASCII 这样的 用数字代表文字符号的规范就被称之为字符集字符编码字符编码 - 白月黑羽如何用字节表示 字符对应的数字就是字符编码规范。字符串是不能直接进行存储和传输的一定要进行编码\x??是什么意思\x表示十六进制hex数值。后面的??是两位十六进制数字。每两位十六进制 8 位二进制 1 个字节Pythonbytes对象的最小单位是字节。所以\x2 位一组2位16进制1个字节字节串本质上就是二进制序列。为什么要用字节串磁盘或网络都是字节序列bytes因为计算机最小的存储单位是字节byte每个字节是 8 位二进制bit所以存储和传输必须把 Unicode 字符【就是每个数字都对应一个字符unicode字符集】转换成字节序列这个转换过程就是编码encode为什么我们说是字节而不是二进制”二进制是最底层的概念bit0 或 1字节是最小可寻址单元8 位代码、网络协议、文件格式都是按字节为单位处理的根据字节就可以知道对应的二进制是谁字节就是 8 位二进制1 字节 8 个二进制位bit范围0~255十进制十六进制表示00~FF所以如果你拿到一个字节可以唯一确定它对应的 8 位二进制。字符串编码为 unicode转义数字。直接用unicode数字字符串表示字符(即字符集是如何用数字表示字符的规范直接用对应的数字表示了)除了utf8gbk 还有一种常见的编码方式叫做unicode-escape就是直接用unicode数字字符串表示字符(即字符集是如何用数字表示字符的规范直接用对应的数字表示了)如下所示 白月黑羽.encode(unicode-escape) b\\u767d\\u6708\\u9ed1\\u7fbd-------------------------------------------------------------------------------------------------------------------------------白月黑羽gbk编码后的字节串就是b\xb0\xd7\xd4\xc2\xba\xda\xd3\xf0.下面就是把这个字节串解码了--------------------------------------------------------------------------------------------------------------------------------’Unicode 码点本质是整数U767D只是习惯用十六进制展示用16进制的字符串 来表示这个字节串字节-》十六进制字符串16进制字符串首先是字符串其次是字符串里都是16进制数字那2个一对就是1个字节喽python字节串是人类友好的格式。可显示的ascii字符直接显示。否则用16进制表示(\x??)b b\xcc\xdc\xb2\xe8\x0e\xe2\xcb\xf2R\x08DI\x8eAi\xb0 b.hex() # ccdcb2e80ee2cbf2520844498e4169b0 bytes.fromhex(ccdcb2e80ee2cbf2520844498e4169b0) # b\xcc\xdc\xb2\xe8\x0e\xe2\xcb\xf2R\x08DI\x8eAi\xb0Pythonbytes打印时会遇到不可打印的字节 → 用\x..转义遇到可打印的 ASCII → 直接显示字符字节串占多少字节1、.hex()后数十六进制字符再除以 2可以算出字节数2、len(字节串)\x后面必须紧跟2个16进制数字这2个16进制表示1个字节.\x后面如果超过2个16进制数字其余的会当作普通字符处理\x只“吃掉”后面两个十六进制字符剩下的内容还在字符串引号里因此按普通字符处理\x才触发“后两位按十六进制解释”的规则
返回列表