最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中bytes和str的區(qū)別與聯(lián)系詳解

 更新時(shí)間:2022年05月05日 11:20:32   作者:斯曦巍峨  
Python3最重要的新特性之一是對(duì)字符串和二進(jìn)制數(shù)據(jù)流做了明確的區(qū),下面這篇文章主要給大家介紹了關(guān)于Python中bytes和str區(qū)別與聯(lián)系的相關(guān)資料,需要的朋友可以參考下

Bytes和Str的區(qū)別

在Python3中,字符序列有兩種類型:bytes和str。bytes類型是無(wú)符號(hào)的8位值(通常以ASCII碼顯式),而str類型是Unicode代碼點(diǎn)(code point)。代碼點(diǎn)指編碼字符集中,字符所對(duì)應(yīng)的數(shù)字。

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()方法可以判斷對(duì)象的類型,例如這里用來(lái)判斷是str還是bytes。

Python3對(duì)文本(str)和二進(jìn)制數(shù)據(jù)(bytes)有著嚴(yán)格的區(qū)分,不能混用。

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 bytes

print('python' == b'python')
# False

上述示例中str類型和bytes類型間使用=來(lái)比較是否相等不會(huì)報(bào)錯(cuò),但是會(huì)返回False。

Bytes與Str間的轉(zhuǎn)換

str類型和bytes類型間可以相互轉(zhuǎn)換。

str到bytes的轉(zhuǎn)換需要調(diào)用encode()方法。

bytes到str間的轉(zhuǎn)換需要調(diào)用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()方法都有一個(gè)encoding參數(shù)用來(lái)指定具體的編碼規(guī)則。

讀寫(xiě)文件的注意事項(xiàng)

當(dāng)要將bytes類型寫(xiě)入到文件中時(shí),必須指定mode=wb。讀取二進(jìn)制文件時(shí)可以指定mode=rb或者指定編碼方式,使用后者時(shí)讀出來(lái)的就不是bytes類型的字符序列了。

x = b'python'

# 錯(cuò)誤示例
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)

# 讀取二進(jìn)制文件方式1
with open('data.bin', mode='rb') as fp:
    content = fp.read()
    print(content)
# python

# 讀取二進(jìn)制文件方式2
with open('data.bin', mode='r', encoding='utf-8') as fp:
    content = fp.read()
    print(content, type(content))
# python <class 'str'>

當(dāng)讀寫(xiě)Unicode數(shù)據(jù)時(shí),只需要注意下編碼方式即可,最好是顯式的傳遞encoding參數(shù)。

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)
# 世界你好

# 錯(cuò)誤示例,編碼方式不對(duì)
with open('data.txt', mode='r', encoding='gbk') as fp:
    content = fp.read()
    print(content)
# 涓栫晫浣犲ソ

總結(jié)

到此這篇關(guān)于Python中bytes和str區(qū)別與聯(lián)系的文章就介紹到這了,更多相關(guān)Python bytes和str區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pytorch VGG11識(shí)別cifar10數(shù)據(jù)集(訓(xùn)練+預(yù)測(cè)單張輸入圖片操作)

    pytorch VGG11識(shí)別cifar10數(shù)據(jù)集(訓(xùn)練+預(yù)測(cè)單張輸入圖片操作)

    這篇文章主要介紹了pytorch VGG11識(shí)別cifar10數(shù)據(jù)集(訓(xùn)練+預(yù)測(cè)單張輸入圖片操作),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python如何處理大數(shù)據(jù)?3個(gè)技巧效率提升攻略(推薦)

    Python如何處理大數(shù)據(jù)?3個(gè)技巧效率提升攻略(推薦)

    這篇文章主要介紹了Python如何處理大數(shù)據(jù)?3個(gè)技巧效率提升攻略,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python格式化輸出--%s,%d,%f的代碼解析

    Python格式化輸出--%s,%d,%f的代碼解析

    這篇文章主要介紹了Python格式化輸出--%s,%d,%f的代碼詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 一文詳解Python中l(wèi)ogging模塊的用法

    一文詳解Python中l(wèi)ogging模塊的用法

    logging是Python標(biāo)準(zhǔn)庫(kù)中記錄常用的記錄日志庫(kù),主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等。本文主要來(lái)和大家聊聊它的具體用法,希望對(duì)大家有所幫助
    2023-02-02
  • Python爬蟲(chóng)必備之XPath解析庫(kù)

    Python爬蟲(chóng)必備之XPath解析庫(kù)

    今天給大家?guī)?lái)的是Python爬蟲(chóng)的相關(guān)知識(shí),文章圍繞著XPath解析庫(kù)展開(kāi),文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下
    2021-06-06
  • Python實(shí)現(xiàn)將json文件生成C語(yǔ)言的結(jié)構(gòu)體的腳本分享

    Python實(shí)現(xiàn)將json文件生成C語(yǔ)言的結(jié)構(gòu)體的腳本分享

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)將json文件生成C語(yǔ)言的結(jié)構(gòu)體,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-09-09
  • Python判斷字符串是否為合法標(biāo)示符操作

    Python判斷字符串是否為合法標(biāo)示符操作

    這篇文章主要介紹了Python判斷字符串是否為合法標(biāo)示符操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Python中Tkinter布局管理grid的使用

    Python中Tkinter布局管理grid的使用

    本文主要介紹了Python中Tkinter布局管理grid的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 3段Python圖像處理的實(shí)用代碼的分享

    3段Python圖像處理的實(shí)用代碼的分享

    這篇文章主要介紹了3段Python圖像處理的實(shí)用代碼的分享,計(jì)算機(jī)視覺(jué)方向的Python實(shí)用代碼,用到多種庫(kù)具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • python數(shù)據(jù)庫(kù)操作--數(shù)據(jù)庫(kù)使用概述

    python數(shù)據(jù)庫(kù)操作--數(shù)據(jù)庫(kù)使用概述

    這篇文章主要介紹了python中使用mysql數(shù)據(jù)庫(kù)詳細(xì)介紹,本文起講解了安裝mysql、安裝MySQL-python、mysql 的基本操作、python 操作mysql數(shù)據(jù)庫(kù)基礎(chǔ)等內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

灵武市| 枝江市| 桓台县| 全椒县| 滨州市| 金昌市| 鹤庆县| 宝兴县| 岳池县| 巴林右旗| 怀安县| 淅川县| 曲麻莱县| 婺源县| 大洼县| 萝北县| 益阳市| 广东省| 新竹县| 剑川县| 沁阳市| 温州市| 固镇县| 张北县| 米易县| 河池市| 台东市| 遵化市| 济阳县| 滨海县| 双辽市| 吴旗县| 济源市| 祥云县| 电白县| 嘉定区| 永清县| 桃园县| 南和县| 洪湖市| 西峡县|