我的数据库中有文本。我从xhr向我的 View 发送一些文本。函数查找找不到某些Unicode字符。

我想使用以下方式查找所选文本:

text.find(selection)

但有时变量“选择”包含如下字符:
ę  # in xhr unichr(281)

而在变量“文本”中有:
ę  # in db has two chars unichr(101) + unichr(808)

它们只是同一事物的不同形式。如何在这里使.find更可靠地工作?

最佳答案

在这里 unicodedata.normalize 可能会为您提供帮助。

基本上,如果您对来自数据库的数据进行规范化,并且将选择规范化为相同的格式,那么在使用str.findstr.__contains__(即in),str.index和 friend 时,您应该会获得更好的结果。

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

NFC代表“普通形式组合”形式。您可以阅读here以获得其他可能形式的描述。

关于Python相同的字符不等于,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36137602/

10-12 23:09