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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python系列(五):bytes和str的区别与联系

發布時間:2023/12/15 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python系列(五):bytes和str的区别与联系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Bytes和Str的區別

在Python3中,字符序列有兩種類型:bytes和str。bytes類型是無符號的8位值(通常以ASCII碼顯式),而str類型是Unicode代碼點(code point)。代碼點指編碼字符集中,字符所對應的數字

a = b'hello world' print(isinstance(a, bytes)) print(list(a)) print(a) """ True [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] b'hello world' """a = 'hello world' print(isinstance(a, str)) print(list(a)) print(a) """ True ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] hello world """

isinstance()方法可以判斷對象的類型,例如這里用來判斷是str還是bytes。

Python3對文本(str)和二進制數據(bytes)有著嚴格的區分,不能混用

x = b'python' y = b'java' z = 'c++' w = 'c'print(x + y) # b'pythonjava' print(z + w) # c++c print(x + z) # TypeError: can't concat str to bytesprint('python' == b'python') # False

上述示例中str類型和bytes類型間使用=來比較是否相等不會報錯,但是會返回False。

Bytes與Str間的轉換

str類型和bytes類型間可以相互轉換。
str到bytes的轉換需要調用encode()方法。
bytes到str間的轉換需要調用decode()方法。

x = b'python' y = x.decode(encoding='utf-8') z = y.encode(encoding='utf-8') print(y) print(z) """ python b'python' """

可以觀察到encode()和decode()方法都有一個encoding參數用來指定具體的編碼規則

讀寫文件的注意事項

當要將bytes類型寫入到文件中時,必須指定mode=wb。讀取二進制文件時可以指定mode=rb或者指定編碼方式,使用后者時讀出來的就不是bytes類型的字符序列了。

x = b'python'# 錯誤示例 with open('data.bin', mode='w') as fp:fp.write(x) # TypeError: write() argument must be str, not bytes# 正確示例 with open('data.bin', mode='wb') as fp:fp.write(x)# 讀取二進制文件方式1 with open('data.bin', mode='rb') as fp:content = fp.read()print(content) # python# 讀取二進制文件方式2 with open('data.bin', mode='r', encoding='utf-8') as fp:content = fp.read()print(content, type(content)) # python <class 'str'>

當讀寫Unicode數據時,只需要注意下編碼方式即可,最好是顯式的傳遞encoding參數。

x = '世界你好'with open('data.txt', mode='w', encoding='utf-8') as fp:fp.write(x)with open('data.txt', mode='r', encoding='utf-8') as fp:content = fp.read()print(content) # 世界你好# 錯誤示例,編碼方式不對 with open('data.txt', mode='r', encoding='gbk') as fp:content = fp.read()print(content) # 涓栫晫浣犲ソ

總結

以上是生活随笔為你收集整理的Python系列(五):bytes和str的区别与联系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。