Как определить в словах подмену букв?
Допустим есть слово авaтар в нем имеется a - английская и a - русская? Как определить, где какая?
Ответы (3 шт):
s=['aвaтaр','aватар','аватар']
for l in s:
print()
for b in l:
print(f"{b} - hex={bytes(b, 'utf-8').hex():>4} - dec={int(bytes(b, 'utf-8').hex(),16)}")
a - hex= 61 - dec=97 латинская a
а - hex=d0b0 - dec=53424 кириллица а
a - hex= 61 - dec=97
в - hex=d0b2 - dec=53426
a - hex= 61 - dec=97
т - hex=d182 - dec=53634
a - hex= 61 - dec=97
р - hex=d180 - dec=53632
a - hex= 61 - dec=97
в - hex=d0b2 - dec=53426
а - hex=d0b0 - dec=53424
т - hex=d182 - dec=53634
а - hex=d0b0 - dec=53424
р - hex=d180 - dec=53632
а - hex=d0b0 - dec=53424
в - hex=d0b2 - dec=53426
а - hex=d0b0 - dec=53424
т - hex=d182 - dec=53634
а - hex=d0b0 - dec=53424
р - hex=d180 - dec=53632
Непонятно, что может быть на входе (Только нижний регистр? Только кириллица? Спецсимволы?) и что должно получится на выходе, но допустим:
word = 'авaтар'
word_checked = ''.join([i if 'а' <= i <= 'я' else '_' for i in word])
print(word_checked)
Проверям, попадают ли входящие символы в промежуток кодов кириллических знаков нижнего регистра и если попадают - оставляем без изменений, если не попадают - меняем на какой-то служебный символ, например подчеркивание.
UPD Вот, для красоты, можно ошибочный символ красить в красный цвет
word_checked = ''.join([i if 'а' <= i <= 'я' else f'\033[31m{i}\033[0m' for i in word])
UPD2 ...или все слово раскрасить - кириллицу в зеленый, латиницу - в красный.
word_checked = ''.join([f'\033[32m{i}\033[0m' if 'а' <= i <= 'я' else f'\033[31m{i}\033[0m' for i in word])
С использованием регулярных выражений - из слова делаем маску, где латиницу заменяем на L, а кириллицу - на К. После чего выводим слово, а под ним - маску.
import re
word = 'aвATар'
mask = re.sub('[а-яёА-ЯЁ]', 'K', re.sub('[a-zA-Z]', 'L', word))
print(f'{word}\n{mask}')
aвATар
LKLLKK