2016-03-21 19 views
11

Mam tekst w mojej bazie danych. Wysyłam tekst z Xhr do mojego widoku. Funkcja find nie znajduje znaków unicode. Chcę odnaleźć zaznaczonego tekstu przy użyciu tylko:Python ten sam znak nie jest równy

text.find(selection) 

ale czasami zmienna 'wybór' ma char tak:

ę # in xhr unichr(281) 

w zmiennej 'tekst' jest char:

ę # in db has two chars unichr(101) + unichr(808) 

Odpowiedz

10

Tutaj unicodedata.normalize może ci pomóc.

Zasadniczo jeśli normalizacji danych pochodzących z db i normalizować swój wybór do tej samej formie, trzeba mieć lepszy wynik podczas korzystania str.find, str.__contains__ (tj in), str.index i przyjaciół.

>>> u1 = chr(281) 
>>> u2 = chr(101) + chr(808) 
>>> print(u1, u2) 
ę ę 
>>> u1 == u2 
False 
>>> unicodedata.normalize('NFC', u2) == u1 
True 

NFC stoi za postaci normalnej Złożony formie. Możesz przeczytać here, aby uzyskać opis innych możliwych formularzy.

Powiązane problemy