Python 3.8+unicodedataфункция
unicodedata.is_normalized()
нормализация
Проверяет, находится ли строка уже в заданной нормальной форме, — быстрее, чем normalize() и сравнение.
Синтаксис
unicodedata.is_normalized(form, unistr, /)
Часто ответ получается без построения новой строки — поэтому её зовут перед normalize() на больших текстах. Форма указывается обязательно: 'й' из двух кодовых точек — False для 'NFC', но True для 'NFD', так что «нормализована» без формы ничего не значит. Строку функция не меняет; появилась в 3.8.
Примеры
import unicodedata
s = 'и\u0306' # й из двух кодовых точек
print(unicodedata.is_normalized('NFC', s), unicodedata.is_normalized('NFD', s)) # → False True
if not unicodedata.is_normalized('NFC', s):
s = unicodedata.normalize('NFC', s)
print(len(s)) # → 1
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности