我的数据库中有文本。我从 xhr 发送一些文本到我的视图。函数 find 未找到某些 unicode 字符。
我想使用以下方法查找选定的文本:
text.find(selection)
但有时变量“选择”包含这样的字符:
ę # in xhr unichr(281)
而在变量“文本”中有:
ę # in db has two chars unichr(101) + unichr(808)
它们只是同一事物的不同形式。怎么做.find
在这里工作更可靠?
Here unicodedata.normalize https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize可能对你有帮助。
基本上,如果您规范化来自数据库的数据,并将您的选择规范化为相同的形式,那么在使用时应该会得到更好的结果str.find
, str.__contains__
(i.e. 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 https://en.wikipedia.org/wiki/Unicode_equivalence#Normalization有关其他可能形式的一些描述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)