python 字符串前加u r b的意义
摘自:https://www.cnblogs.com/liangmingshen/p/9274021.html
1、字符串前加 u
例:u"我是含有中文字符組成的字符串。"
作用:
后面字符串以 Unicode 格式 進行編碼,一般用在中文字符串前面,防止因為源碼儲存格式問題,導致再次使用時出現亂碼。
?
2、字符串前加 r
例:r"\n\n\n\n” # 表示一個普通生字符串 \n\n\n\n,而不表示換行了。
作用:
去掉反斜杠的轉移機制。
(特殊字符:即那些,反斜杠加上對應字母,表示對應的特殊含義的,比如最常見的”\n”表示換行,”\t”表示Tab等。 )
應用:
常用于正則表達式,對應著re模塊。
?
3、字符串前加 b
例:?response = b'<h1>Hello World!</h1>'? ? ?#?b' ' 表示這是一個 bytes 對象
作用:
b" "前綴表示:后面字符串是bytes 類型。
用處:
網絡編程中,服務器和瀏覽器只認bytes 類型數據。
如:send 函數的參數和 recv 函數的返回值都是 bytes 類型
附:
在 Python3 中,bytes 和 str 的互相轉換方式是
str.encode('utf-8')
bytes.decode('utf-8')
?
?
字符串對象給人看的
字節對象是給計算機看的
?
字符對象-->編碼-->字節對象-->解碼-->字符對象
?
?
acsii編碼,只針對英文,一個Bytes代表一個字符
gb2312編碼,支持中文,2Bytes代表一個字符
unicode編碼,世界上的所有字符,2·4Bytes代表一個字符
?utf-8是unicode的實現方式之一,對英文字符只用1Bytes表示,對中文字符用3Bytes
?
?摘自:https://blog.csdn.net/hezh1994/article/details/78899683
?
以漢字“漢”為例,它的 Unicode 碼點是 0x6c49,對應的二進制數是 110110001001001,二進制數有 15 位,這也就說明了它至少需要 2 個字節來表示。這就導致了一些問題,計算機怎么知道你這個 2 個字節表示的是一個字符,而不是分別表示兩個字符呢?這里我們可能會想到,那就取個最大的,假如Unicode 中最大的字符用 4 字節就可以表示了,那么我們就將所有的字符都用 4 個字節來表示,不夠的就往前面補 0。這樣確實可以解決編碼問題,但是卻造成了空間的極大浪費,如果是一個英文文檔,那文件大小就大出了 3 倍,這顯然是無法接受的。
UTF-8 是一個非常驚艷的編碼方式,漂亮的實現了對 ASCII 碼的向后兼容,以保證 Unicode 可以被大眾接受。
UTF-8 是目前互聯網上使用最廣泛的一種 Unicode 編碼方式,它的最大特點就是可變長。它可以使用 1 - 4 個字節表示一個字符,根據字符的不同變換長度。編碼規則如下:
對于單個字節的字符,第一位設為 0,后面的 7 位對應這個字符的 Unicode 碼點。因此,對于英文中的 0 - 127 號字符,與 ASCII 碼完全相同。這意味著 ASCII 碼那個年代的文檔用 UTF-8 編碼打開完全沒有問題。
對于需要使用 N 個字節來表示的字符(N > 1),第一個字節的前 N 位都設為 1,第 N + 1 位設為0,剩余的 N - 1 個字節的前兩位都設位 10,剩下的二進制位則使用這個字符的 Unicode 碼點來填充。
編碼規則如下:
Unicode 十六進制碼點范圍 UTF-8 二進制
0000 0000 - 0000 007F 0xxxxxxx
0000 0080 - 0000 07FF 110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
漢”的 Unicode 碼點是 0x6c49(110 1100 0100 1001),通過上面的對照表可以發現,0x0000 6c49 位于第三行的范圍,那么得出其格式為 1110xxxx 10xxxxxx 10xxxxxx。接著,從“漢”的二進制數最后一位開始,從后向前依次填充對應格式中的 x,多出的 x 用 0 補上。這樣,就得到了“漢”的 UTF-8 編碼為 11100110 10110001 10001001,轉換成十六進制就是 0xE6 0xB7 0x89。
解碼的過程也十分簡單:如果一個字節的第一位是 0 ,則說明這個字節對應一個字符;如果一個字節的第一位1,那么連續有多少個 1,就表示該字符占用多少個字節。
轉載于:https://www.cnblogs.com/blogzyq/p/11068728.html
總結
以上是生活随笔為你收集整理的python 字符串前加u r b的意义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python---进阶---loggin
- 下一篇: Android Studio 3.0+