第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在字符串文字前面,‘b’字符是做什么的?

在字符串文字前面,‘b’字符是做什么的?

蝴蝶不菲 2019-05-31 17:14:20
在字符串文字前面,‘b’字符是做什么的?顯然,以下是有效的語法my_string = b'The string'我想知道:這是什么b字串前面的意思是?使用它有什么效果?使用它的適當(dāng)情況是什么?我找到了一個相關(guān)問題就在這里,但是這個問題是關(guān)于PHP的,它指出b用于指示字符串是二進制的,而Unicode是從PHP<6版本兼容的代碼在遷移到PHP 6時所需的。我認為這不適用于Python。我確實找到了本文件在Python站點上使用u在相同的語法中指定字符串為Unicode的字符。不幸的是,它沒有提到b文件中任何地方的字符。而且,出于好奇,是否有更多的符號比b和u做其他的事?
查看完整描述

4 回答

?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

Python 3.x明確區(qū)分以下類型:

  • str = '...'

    文本=Unicode字符序列(UTF-16或UTF-32,取決于Python是如何編譯的)
  • bytes = b'...'

    文本=八元序列(0到255之間的整數(shù))

如果您熟悉Java或C#,請考慮strStringbytesbyte[]..如果您熟悉SQL,請考慮strNVARCHARbytesBINARYBLOB..如果您熟悉Windows注冊表,請考慮strREG_SZbytesREG_BINARY..如果你熟悉C(+),那么忘記你學(xué)到的一切char和字符串,因為字符不是字節(jié)..這個想法早就過時了。

你用str當(dāng)你想代表文本的時候。

print('???? ????')

你用bytes當(dāng)您想表示像structs這樣的低級二進制數(shù)據(jù)時。

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]

你可以的編碼 a str轉(zhuǎn)到bytes對象。

>>> '\uFEFF'.encode('UTF-8')b'\xef\xbb\xbf'

你可以解碼bytes變成str.

>>> b'\xE2\x82\xAC'.decode('UTF-8')'€'

但你不能隨意混合這兩種類型。

>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'Traceback (most recent call last):
  File "<stdin>", line 1, in <module>TypeError: can't concat bytes to str

二.b'...'符號有點混亂,因為它允許用ASCII字符而不是十六進制數(shù)字來指定字節(jié)0x01-0x7F。

>>> b'A' == b'\x41'True

但我必須強調(diào),字符不是字節(jié).

>>> 'A' == b'A'False

在Python2.x中

Python的前3.0版本缺乏文本和二進制數(shù)據(jù)之間的這種區(qū)別。相反,有:

  • unicode = u'...'

    文字=Unicode字符序列=3.x

    str

  • str = '...'

    文字=混亂的字節(jié)/字符序列
    • 通常是文本,以某種未指定的編碼方式編碼。
    • 但也用來表示二進制數(shù)據(jù),如

      struct.pack

      輸出。

為了簡化2.x到-3.x的轉(zhuǎn)換,b'...'將文字語法移植到Python2.6,以便區(qū)分二進制字符串(應(yīng)該是bytes在3.x中)從文本字符串(應(yīng)該是str(見3.x)。這個b前綴在2.x中什么也不做,但是告訴2to3腳本不將其轉(zhuǎn)換為3.x中的Unicode字符串。

所以是的,b'...'Python中的文字具有與PHP中相同的目的。

而且,出于好奇,還有比b和u更多的符號做其他事情嗎?

二.r前綴創(chuàng)建原始字符串(例如,r'\t'是反斜杠+t(而不是制表符),以及三重引號'''...'''"""..."""允許多行字符串文字.





    查看完整回答
    反對 回復(fù) 2019-05-31
    ?
    達令說

    TA貢獻1821條經(jīng)驗 獲得超6個贊

    b表示字節(jié)字符串。

    字節(jié)是實際數(shù)據(jù)。字符串是一種抽象。

    如果您有多個字符串對象,并且您接受了一個字符,那么它將是一個字符串,并且根據(jù)編碼的不同,它的大小可能超過1字節(jié)。

    如果使用一個字節(jié)字符串的1字節(jié),則從0-255中得到一個8位值,如果編碼導(dǎo)致的字符大于1字節(jié),它可能不代表完整的字符。

    tbh我會使用字符串,除非我有一些特定的低級原因來使用字節(jié)。


    查看完整回答
    反對 回復(fù) 2019-05-31
    ?
    瀟湘沐

    TA貢獻1816條經(jīng)驗 獲得超6個贊

    它把它變成了bytes文字(或str在2.x)中,并且對2.6+有效。

    二.r前綴會導(dǎo)致反斜杠“未解釋”(不忽略)和差異。是嗎?)。


    查看完整回答
    反對 回復(fù) 2019-05-31
    • 4 回答
    • 0 關(guān)注
    • 3936 瀏覽
    慕課專欄
    更多

    添加回答

    舉報

    0/150
    提交
    取消
    微信客服

    購課補貼
    聯(lián)系客服咨詢優(yōu)惠詳情

    幫助反饋 APP下載

    慕課網(wǎng)APP
    您的移動學(xué)習(xí)伙伴

    公眾號

    掃描二維碼
    關(guān)注慕課網(wǎng)微信公眾號