все Python 3unicodedataфункция
unicodedata.combining()
свойства символов
Возвращает класс канонического комбинирования символа — целое число; 0 у обычных букв, ненулевое у большинства надстрочных знаков.
Синтаксис
unicodedata.combining(chr, /)
Типичный рецепт «убрать диакритику» — NFD и выбросить символы с combining(c) != 0 — для русского текста ломает 'й': бреве тоже знак, и 'йод' превращается в 'иод'. Ноль не гарантирует, что символ не знак: у U+034F COMBINING GRAPHEME JOINER класс 0 при категории 'Mn'. Чтобы опознать знак, надёжнее category(c).startswith('M').
Примеры
import unicodedata
text = unicodedata.normalize('NFD', 'café, йод')
print(''.join(c for c in text if not unicodedata.combining(c))) # → cafe, иод — й сломалась
print(unicodedata.combining('\u0301'), unicodedata.combining('\u034f')) # → 230 0
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности