python3中最重要的新特性可能就是將文字(text)和二進位制資料做了更清晰的區分。文字總是用unicode進行編碼,以str型別表示;而二進位制資料以bytes型別表示。
在python3中,不能以任何隱式方式將str和bytes型別二者混合使用。不可以將str和bytes型別進行拼接,不能在str中搜尋bytes資料(反之亦然),也不能將str作為引數傳入需要bytes型別引數的函式(反之亦然)。
字串和位元組符之間劃分界線是必然的。下面這個**要牢記於心:
strings可以被編碼(encode)成字bytes,bytes也可以解碼(decode)成strings:
>>>
'€20'
.encode(
'utf-8'
)
b
'\xe2\x82\xac20'
>>> b
'\xe2\x82\xac20'
.decode(
'utf-8'
)
'€20'
可以這樣理解:
string是文字(text)的抽象表示。字串(string)由字元組成,字元也是抽象的實體且與任何二進位制表示無關。
當操縱字串的時候,很多細節是不用了解的。我們可以分割、切片和拼接字串,在字串內部進行搜尋。但並不在乎內部是如何表示的,也不用在意底層乙個字元要花費多少byte。
只有在需要將string編碼(encode)成byte的時候,比如:通過網路傳輸資料;或者需要將byte解碼(decode)成string的時候,我們才會關注string和byte的區別。
傳入encode和decode的引數是編碼方式。編碼是一種用二進位制資料表示抽象字元的方式。目前有很多種編碼。上面給出的utf-8是其中一種,下面是另一種:
>>>
'€20'
.encode(
'iso-8859-15'
)
b
'\xa420'
>>> b
'\xa420'
.decode(
'iso-8859-15'
)
'€20'
編碼是這個轉換過程中至關重要的一部分。若不編碼,bytes物件b'\xa420'只是一堆位元位而已。編碼賦予其含義。採用不同的編碼,這堆位元位的含義就會大不同:
>>> b
'\xa420'
.decode(
'windows-1255'
)
'₪20'
String與string的區別
1 string是乙個類,string是一種資料型別.2 string是c 中的類,string是.net framework的類 在c ide中不會顯示藍色 3 c string對映為.net framework的string 4 如果用string,編譯器會把它編譯成string,所以如果直接用...
String與string的區別
c 是區分大小寫的,但是我卻發現c 中同時存在string與string,於是我很困惑,於是我上網搜尋了一下,於是我了解了一些小知識。msdn中對string的說明 stringis analiasforstringin the net framework。string是string的別名而已,st...
收藏 String與string的區別
string是c 中的類,string是.net framework的類 在c ide中不會顯示藍色 c string對映為.net framework的string 如果用string,編譯器會把它編譯成string,所以如果直接用string就可以讓編譯器少做一點點工作 如果使用c 建議使用st...