2016-03-21 101 views
11

我在我的數據庫中有一個文本。我從xhr發送一些文本到我的觀點。函數find找不到一些unicode字符。 我想用剛找到選定的文本:Python相同的字符不等於

text.find(selection) 

但有時變量 '選擇' 有字符像:

ę # in xhr unichr(281) 
變量 '文本'

有一個char:

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

回答

10

這裏unicodedata.normalize可能會幫助你。

基本上,如果你從標準化的數據庫來的數據,以及標準化您的選擇,以相同的形式,你應該使用str.findstr.__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代表的範式組成形式。你可以閱讀here瞭解其他可能的形式的一些描述。