Как заменить недопустимые символы Юникода в строке в Python?

Насколько я знаю, концепция python состоит в том, чтобы в строке были только допустимые символы, но в моем случае ОС будет выдавать строки с неверными кодировками в именах путей, с которыми мне приходится иметь дело. Таким образом, я получаю строки, содержащие символы, не являющиеся юникодом.

Чтобы исправить эти проблемы, мне нужно как-то отобразить эти строки. К сожалению, я не могу напечатать их, потому что они содержат не-Unicode символы. Есть ли элегантный способ заменить эти символы, чтобы хотя бы получить представление о содержании строки?

Моя идея состояла бы в том, чтобы обрабатывать эти строки символ за символом и проверять, является ли сохраненный символ действительным юникодом. В случае недопустимого символа я хотел бы использовать определенный символ Unicode. Но как я могу это сделать? С помощьюcodecs кажется, не подходит для этой цели: у меня уже есть строка, возвращаемая операционной системой, а не байтовый массив. Преобразование строки в байтовый массив, кажется, включает в себя декодирование, которое, конечно, не сработает в моем случае. Похоже, я застрял.

У вас есть какие-нибудь советы для меня, как создать такую ​​строку замены?