2016-03-21 102 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了解其他可能的形式的一些描述。