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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 解决bytes和str之间 出现 TypeError的问题

發(fā)布時(shí)間:2025/3/12 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 解决bytes和str之间 出现 TypeError的问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

解決TypeError: can only concatenate str (not “bytes”) to str

錯(cuò)誤提示:
pic_content = pic_content+f.read()
TypeError: can only concatenate str (not “bytes”) to str

首先來(lái)看代碼:

text_content = '''HTTP/1.x 200 OK Content-Type: text/html<head> <title>WOW</title> </head> <html> <p>Wow, Python Server</p> <IMG src="test.jpg"/> </html> ''' f = open('test.jpg', 'rb') pic_content = ''' HTTP/1.x 200 OK Content-Type: image/jpg''' pic_content = pic_content+f.read()

rb:也即 binary mode,read()操作返回的是bytes
但是pic_content是 str類(lèi)型的,所以這時(shí)候可以通過(guò)在pic_content字符串前加 b,把字符串類(lèi)型轉(zhuǎn)換成bytes 類(lèi)型。

錯(cuò)誤解決。

解決 TypeError: a bytes-like object is required, not ‘str’

錯(cuò)誤提示:
method = request.split(’ ')[0]
TypeError: a bytes-like object is required, not ‘str’

s.listen(3) conn, addr = s.accept() request = conn.recv(1024) method = request.split(' ')[0] src = request.split(' ')[1]

由代碼塊:recv 函數(shù)的返回值是 bytes 類(lèi)型。
request是個(gè)bytes類(lèi)型,但是split是對(duì)str進(jìn)行操作的,所以此時(shí)要把bytes類(lèi)型轉(zhuǎn)換成str。也就是要對(duì)request 進(jìn)行 decode操作:
request.decode()

修改兩行代碼 錯(cuò)誤解決。

method = request.decode().split(' ')[0] src = request.decode().split(' ')[1]

Python 字符串前面加u,r,b,f的含義

字符串前加 u

u"我是含有中文字符組成的字符串。"

作用:后面字符串以 Unicode 格式 進(jìn)行編碼,一般用在中文字符串前面,防止因?yàn)樵创a儲(chǔ)存格式問(wèn)題,導(dǎo)致再次使用時(shí)出現(xiàn)亂碼。

字符串前加 r

r"\n\n\n\n”  # 表示一個(gè)普通生字符串 \n\n\n\n,而不表示換行了。

作用:去掉反斜杠的轉(zhuǎn)譯機(jī)制。

(特殊字符:即那些,反斜杠加上對(duì)應(yīng)字母,表示對(duì)應(yīng)的特殊含義的,比如最常見(jiàn)的”\n”表示換行,”\t”表示Tab等。 )

應(yīng)用:常用于正則表達(dá)式,對(duì)應(yīng)著re模塊。

字符串前加 b

response = b'<h1>Hello World!</h1>' # b' ' 表示這是一個(gè) bytes 對(duì)象

作用:b" "前綴表示:后面字符串是bytes 類(lèi)型。

用處:網(wǎng)絡(luò)編程中,服務(wù)器和瀏覽器只認(rèn)bytes 類(lèi)型數(shù)據(jù)。

如:send 函數(shù)的參數(shù)和 recv 函數(shù)的返回值都是 bytes 類(lèi)型

在 Python3 中,bytes 和 str 的互相轉(zhuǎn)換方式:

str→bytes:encode()方法。str通過(guò)encode()方法可以轉(zhuǎn)換為bytes。
bytes→str: decode()方法。bytes通過(guò)decode()方法可以轉(zhuǎn)換為str。

字符串前加 f

import time t0 = time.time() time.sleep(1) name = 'processing'#以 f開(kāi)頭表示在字符串內(nèi)支持大括號(hào)內(nèi)的python 表達(dá)式 print(f'{name} done in {time.time() - t0:.2f} s')

輸出:
processing done in 1.00 s

總結(jié)

以上是生活随笔為你收集整理的python 解决bytes和str之间 出现 TypeError的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。