Насколько я знаю, концепция python имеет только допустимые символы в строке, но в моем случае ОС будет поставлять строки с неверными кодировками в именах путей, с которыми мне приходится иметь дело. Поэтому я заканчиваю строками, которые содержат символы, которые не являются юникодами.Как заменить недопустимые символы юникода в строке в Python?
Чтобы исправить эти проблемы, мне нужно как-то отобразить эти строки. К сожалению, я не могу напечатать их, потому что они содержат символы не-Юникода. Есть ли элегантный способ заменить эти символы каким-то образом, по крайней мере, получить представление о содержании строки?
Моей идеей было бы обработать эти строки символом по символу и проверить, действительно ли сохраненный символ является действительным юникодом. В случае недопустимого символа я хотел бы использовать определенный символ юникода. Но как я могу это сделать? Использование codecs
кажется не подходящим для этой цели: у меня уже есть строка, возвращаемая операционной системой, а не массив байтов. Преобразование строки в массив байтов, по-видимому, включает в себя декодирование, которое, конечно, потерпит неудачу. Кажется, я застрял.
У вас есть советы для меня, как создать такую заменяющую строку?
Пожалуйста, включите строку выборки в вашем вопросе; используйте 'print repr (obj)' для создания образца. Вероятно, вы можете использовать подходящий режим 'errors', чтобы иметь место для заполнителей Python. –
.decode ("utf-8", "ignore") игнорирует плохие символы. – les
В оболочках bash я получаю вопросительные знаки в качестве замещающих символов. В менеджерах файлов я вижу инвертированный знак вопроса. –