python 解决bytes和str之间 出现 TypeError的问题
解決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’
由代碼塊: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)題。
- 上一篇: java存钱_用Java编写银行存钱取钱
- 下一篇: websocket python爬虫_p