2017-02-22 110 views
1

我有一個函數:Python3字符串轉換問題

def push(push): 
    ser.write(push + '\r') 
    pull = ser.read(11) 
    return pull 

和我這樣稱呼它:

out = push("ka " + dp_id + " ff") 

原來與python2工作得很好,但是當我使用Python 3,我得到錯誤:

unicode strings are not supported, please encode to bytes: 'ka 01 ff\r'

現在,如果我這樣做:

out = push(b"ka " + display_id + " ff") 

我得到的錯誤:

can't concat bytes to str

林困惑。有什麼幫助?

回答

5

該問題與push本身無關。你寫:

b"ka " + display_id + " ff" 
# ^bytes ^string  ^string 

b前綴說你實際上寫了一個字節序列)。

這樣就行不通了。您可以將編碼爲將字符串編碼爲.encode()的字節數組,並在最後一個字符串上使用b前綴。所以:

b"ka " + display_id.encode() + b" ff" 
# ^bytes ^bytes    ^bytes
+1

非常感謝你,爲我制定了計劃! – DildoShwagginz