Как получить доступ к строке со смешанными 1-байтовыми и 2-байтовыми символами?
Я читаю вопросы и ответы для теста из файла в кодировке UTF-8, но ответ может состоять из 1 байтовых символов (английский) и 2 байтовых символов (русский) в одном и том же тексте:
"best car тайота"`
Мне нужно написать ответ, замененный на "*"
так выглядит "**** *** ******"
чтобы помочь угадать, что ответ. Для определения длины я использую
len(answer.decode('utf-8'))
Но в следующей подсказке, когда я хочу показать некоторые символы, такие как "b*s* ca* *а*от*"
Я могу получить доступ к 1-байтовым символам через answer[index]
но я не могу прочитать 2-байтовые символы таким образом, и поэтому я получаю "b*s* ca*"
без 2-х байтовых символов.
Есть ли решение для этого?
1 ответ
Декодируйте строку в значение Unicode один раз и делайте в ней замену.
unicode
строковый объект поддерживает те же операции, что и байтовые строки; просто будьте осторожны при смешивании байтовых строк и строк Unicode, так как это может вызвать автоматическое кодирование или декодирование (что приводит к UnicodeEncode
или же UnicodeDecode
ошибки). Печать строки должна автоматически кодировать значение в соответствии с вашим кодеком терминала.
Вы можете прочитать о Python и Unicode: