2016-11-06 1 views
0
async def chuck(self): 
     joketype = 'nerdy' if randint(0, 100) < 50 else 'explicit' 
     cnjoke = requests.get('http://api.predator.wtf/joke/?arguments={}'.format(joketype),allow_redirects = True).content 

     return '{}'.format(str(cnjoke.replace('&quot;', '"').replace('steal', 'steel'))) 

Я пытаюсь использовать этот API, чтобы получить Chuck Norris шутки (не спрашивайте лол), но она возвращается сообщение об ошибке:Python 3, TypeError: а байт-подобный объект необходим, а не «ул»

return '```{}```'.format(str(cnjoke.replace('&quot;', '"').replace('steal', 'steel'))) 
TypeError: a bytes-like object is required, not 'str' 

Я не уверен, что делать.

ответ

1
'```{}```'.format(str(cnjoke).replace('&quot;', '"').replace('steal', 'steel')) 

или

'```{}```'.format(cnjoke.decode().replace('&quot;', '"').replace('steal', 'steel')) 

и content возвращает байт

type(cnjoke) #bytes 

text используя вместо этого может быть лучше в вашем случае

_cnjoke = requests.get('http://api.predator.wtf/joke/?arguments={}'.format(joketype),allow_redirects = True).text 
type(_cnjoke) #str 
+0

Большое спасибо, работает отлично <3 – ChickenRun