日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 字符串前加u r b的意义

發(fā)布時(shí)間:2025/7/25 python 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 字符串前加u r b的意义 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘自:https://www.cnblogs.com/liangmingshen/p/9274021.html

1、字符串前加 u

例:u"我是含有中文字符組成的字符串。"

作用:

后面字符串以 Unicode 格式 進(jìn)行編碼,一般用在中文字符串前面,防止因?yàn)樵创a儲(chǔ)存格式問(wèn)題,導(dǎo)致再次使用時(shí)出現(xiàn)亂碼。

?

2、字符串前加 r

例:r"\n\n\n\n”  # 表示一個(gè)普通生字符串 \n\n\n\n,而不表示換行了。

作用:

去掉反斜杠的轉(zhuǎn)移機(jī)制。

(特殊字符:即那些,反斜杠加上對(duì)應(yīng)字母,表示對(duì)應(yīng)的特殊含義的,比如最常見(jiàn)的”\n”表示換行,”\t”表示Tab等。 )

應(yīng)用:

常用于正則表達(dá)式,對(duì)應(yīng)著re模塊。

?

3、字符串前加 b

例:?response = b'<h1>Hello World!</h1>'? ? ?#?b' ' 表示這是一個(gè) bytes 對(duì)象

作用:

b" "前綴表示:后面字符串是bytes 類(lèi)型。

用處:

網(wǎng)絡(luò)編程中,服務(wù)器和瀏覽器只認(rèn)bytes 類(lèi)型數(shù)據(jù)。

如:send 函數(shù)的參數(shù)和 recv 函數(shù)的返回值都是 bytes 類(lèi)型

附:

在 Python3 中,bytes 和 str 的互相轉(zhuǎn)換方式是
str.encode('utf-8')
bytes.decode('utf-8')

?


?

字符串對(duì)象給人看的

字節(jié)對(duì)象是給計(jì)算機(jī)看的

?

字符對(duì)象-->編碼-->字節(jié)對(duì)象-->解碼-->字符對(duì)象

?

?

acsii編碼,只針對(duì)英文,一個(gè)Bytes代表一個(gè)字符

gb2312編碼,支持中文,2Bytes代表一個(gè)字符

unicode編碼,世界上的所有字符,2·4Bytes代表一個(gè)字符

?utf-8是unicode的實(shí)現(xiàn)方式之一,對(duì)英文字符只用1Bytes表示,對(duì)中文字符用3Bytes

?


?摘自:https://blog.csdn.net/hezh1994/article/details/78899683

?

以漢字“漢”為例,它的 Unicode 碼點(diǎn)是 0x6c49,對(duì)應(yīng)的二進(jìn)制數(shù)是 110110001001001,二進(jìn)制數(shù)有 15 位,這也就說(shuō)明了它至少需要 2 個(gè)字節(jié)來(lái)表示。這就導(dǎo)致了一些問(wèn)題,計(jì)算機(jī)怎么知道你這個(gè) 2 個(gè)字節(jié)表示的是一個(gè)字符,而不是分別表示兩個(gè)字符呢?這里我們可能會(huì)想到,那就取個(gè)最大的,假如Unicode 中最大的字符用 4 字節(jié)就可以表示了,那么我們就將所有的字符都用 4 個(gè)字節(jié)來(lái)表示,不夠的就往前面補(bǔ) 0。這樣確實(shí)可以解決編碼問(wèn)題,但是卻造成了空間的極大浪費(fèi),如果是一個(gè)英文文檔,那文件大小就大出了 3 倍,這顯然是無(wú)法接受的。

UTF-8 是一個(gè)非常驚艷的編碼方式,漂亮的實(shí)現(xiàn)了對(duì) ASCII 碼的向后兼容,以保證 Unicode 可以被大眾接受。

UTF-8 是目前互聯(lián)網(wǎng)上使用最廣泛的一種 Unicode 編碼方式,它的最大特點(diǎn)就是可變長(zhǎng)。它可以使用 1 - 4 個(gè)字節(jié)表示一個(gè)字符,根據(jù)字符的不同變換長(zhǎng)度。編碼規(guī)則如下:

對(duì)于單個(gè)字節(jié)的字符,第一位設(shè)為 0,后面的 7 位對(duì)應(yīng)這個(gè)字符的 Unicode 碼點(diǎn)。因此,對(duì)于英文中的 0 - 127 號(hào)字符,與 ASCII 碼完全相同。這意味著 ASCII 碼那個(gè)年代的文檔用 UTF-8 編碼打開(kāi)完全沒(méi)有問(wèn)題。

對(duì)于需要使用 N 個(gè)字節(jié)來(lái)表示的字符(N > 1),第一個(gè)字節(jié)的前 N 位都設(shè)為 1,第 N + 1 位設(shè)為0,剩余的 N - 1 個(gè)字節(jié)的前兩位都設(shè)位 10,剩下的二進(jìn)制位則使用這個(gè)字符的 Unicode 碼點(diǎn)來(lái)填充。

編碼規(guī)則如下:

Unicode 十六進(jìn)制碼點(diǎn)范圍 UTF-8 二進(jìn)制
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 碼點(diǎn)是 0x6c49(110 1100 0100 1001),通過(guò)上面的對(duì)照表可以發(fā)現(xiàn),0x0000 6c49 位于第三行的范圍,那么得出其格式為 1110xxxx 10xxxxxx 10xxxxxx。接著,從“漢”的二進(jìn)制數(shù)最后一位開(kāi)始,從后向前依次填充對(duì)應(yīng)格式中的 x,多出的 x 用 0 補(bǔ)上。這樣,就得到了“漢”的 UTF-8 編碼為 11100110 10110001 10001001,轉(zhuǎn)換成十六進(jìn)制就是 0xE6 0xB7 0x89。

解碼的過(guò)程也十分簡(jiǎn)單:如果一個(gè)字節(jié)的第一位是 0 ,則說(shuō)明這個(gè)字節(jié)對(duì)應(yīng)一個(gè)字符;如果一個(gè)字節(jié)的第一位1,那么連續(xù)有多少個(gè) 1,就表示該字符占用多少個(gè)字節(jié)。

轉(zhuǎn)載于:https://www.cnblogs.com/blogzyq/p/11068728.html

總結(jié)

以上是生活随笔為你收集整理的python 字符串前加u r b的意义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。