2017-02-22 10 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

Im смущенный. Что помогает?

ответ

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

Смежные вопросы