Python - требуется объект типа bytes, а не str

Я перемещаю своего бота Twitch с Python 2.7 на Python 3.5. Я все время получаю сообщение об ошибке: a bytes like object is required not 'str' во второй строке приведенного ниже кода.

twitchdata = irc.recv(1204)
    data = twitchdata.split(":")[1]
    twitchuser = data.split("!")[0]
    twitchmsg = twitchdata.split(":")[2]
    chat = str(twitchuser) +": "+ str(twitchmsg)
    print(chat) #prints chat to console

person spencermehta    schedule 15.04.2015    source источник
comment
См. Также: Прагматический Юникод или Как мне остановить боль? Неда Батчелера.   -  person    schedule 15.04.2015


Ответы (1)


пытаться

data = twitchdata.decode().split(":")[1]

вместо

data = twitchdata.split(":")[1]
person valentin    schedule 15.04.2015
comment
Я думаю, вы имеете в виду decode. И, конечно же, то же самое потребуется для других вызовов split, поэтому декодирование должно происходить один раз, в первой строке. Плюс вопрос, является ли ASCII правильной кодировкой ... - person ; 15.04.2015
comment
Я думаю, что это только decode (), и я думаю, что это связано с docs.python.org/release/3.0.1/whatsnew/ - person valentin; 15.04.2015
comment
Спасибо. Я использовал data = twitchdata.decode (ascii) .split (:) [1], и это сработало. - person spencermehta; 15.04.2015
comment
Мне лучше без ascii, это избавит ваш код от проблем с юникодом - person valentin; 15.04.2015
comment
Я решил ту же проблему с bytes(my_str, encoding='UTF-8') и удалил все, что осталось для совместимости с PY2. - person ivan866; 21.08.2020