Явно не самая изящная идея (рекурсивная функция), но может поможет:
def processing_bstring(bstring, attemps=[]):
try:
bstring.decode('ascii')
print('Первые', len(bstring),'символов лежат в пространстве ASCII!:', bstring)
print('Номер попытки:', len(attemps) + 1)
print('История неудач:', attemps)
except UnicodeDecodeError:
if len(attemps) < 10: #ограничиваем число попыток
attemps.append('Не ASCII-строка!') #добавляем причину неудачи в историю неудач
processing_bstring(bstring[:-1], attemps) #откидываем от строки последний байт и вызываем заново
else:
print('Исчерпаны все попытки обработки строки!')
my_bytes = 'qwz123ё'.encode()
processing_bstring(my_bytes)