Ответ 1
Здесь unicodedata.normalize
может вам помочь.
В принципе, если вы нормализуете данные, поступающие из db, и нормализуете свой выбор в той же форме, вы должны иметь лучший результат при использовании str.find
, str.__contains__
(т.е. in
), str.index
и друзья.
>>> u1 = chr(281)
>>> u2 = chr(101) + chr(808)
>>> print(u1, u2)
ę ę
>>> u1 == u2
False
>>> unicodedata.normalize('NFC', u2) == u1
True
NFC означает форму, составленную с использованием обычной формы. Вы можете прочитать здесь для описания других возможных форм.