python3字串位元組轉碼相關問題

2021-08-22 04:35:00 字數 1373 閱讀 4190

這得從一張說起:

就長上面這個樣子,對了,不能正常顯示的是中文。

身為老司機,一看就是字元編碼的問題。

然後果斷檢查輸入資料來源什麼編碼,然後自信的.decode()

然而並沒有什麼卵用,我記錯了?測試一下:

沒毛病啊,為毛不行?

去衝衝浪詳細了解下是什麼鬼:

首先了解下資料前面加u,r,b的含義

u/u:表示unicode字串 :不是僅僅是針對中文, 可以針對任何的字串,代表是對字串進行unicode編碼。 一般英文本元在使用各種編碼下, 基本都可以正常解析, 所以一般不帶u;但是中文, 必須表明所需編碼, 否則一旦編碼轉換就會出現亂碼。 建議所有編碼方式採用utf8r/r:非轉義的原始字串 :與普通字元相比,其他相對特殊的字元,其中可能包含轉義字元,即那些,反斜槓加上對應字母,表示對應的特殊含義的,比如最常見的」\n」表示換行,」\t」表示tab等。而如果是以r開頭,那麼說明後面的字元,都是普通的字元了,即如果是「\n」那麼表示乙個反斜槓字元,乙個字母n,而不是表示換行了。以r開頭的字元,常用於正規表示式,對應著re模組。b:bytespython3.x裡預設的str是(py2.x裡的)unicode, bytes是(py2.x)的str,b」「字首代表的就是bytes python2.x裡, b字首沒什麼具體意義, 只是為了相容python3.x的這種寫法 s => b'\u4e2d\u6587\u5b57\u7b26' print(s.decode('unicode_escape'))

搞一下:

成了!

深挖一下unicode-escape發現還有個string-escape,簡單介紹下:

unicode-escape是對unicode編碼的位元組流,兩個位元組兩個位元組轉義,並對每兩個位元組一起以16進製制輸出。

string-escape是對二進位制的位元組流,乙個位元組乙個位元組轉義,並對每個位元組以16進製制輸出

總結一下

unicode-escape解決對應本博文出現的問題,string-escape解決本博文出現問題的逆過程。

紅字部分引用

python3字串相等 python3 字串

1 拼接 1 多個字串進行連線 連線符,必須左右資料型別一致 例 print hello world 結果 helloworld 例 print 5 world 結果 typeerror unsupported operand type s for int and str 2 多個相同字串連線 字串...

python3 字串基礎

字串可以使用一對單引號或一對雙引號指定起止位置,兩種方式指定的字串完全等價。如 hello 和 world 可以用三引號 或 指定多行字串,其中可自由使用單 雙引號而不需轉義。如 what s your name?i asked.字串過長不方便寫在一行時,可以使用反斜槓跨行而不增加換行符。如 abc...

python3 字串操作

auther aaron fan name my tname is age is print name.capitalize 這段話的首字母大寫 print name.count a 統計這段字串中一共有多少個a print name.casefold print name.center 50,一共...