问题 Python相同的char不等于


我的数据库中有一个文本。我从xhr发送一些文字给我看。函数find找不到一些unicode字符。 我想使用以下方法查找所选文本:

text.find(selection)

但有时变量'选择'有这样的字符:

ę # in xhr unichr(281)

在变量'text'中有一个char:

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

7342
2018-03-21 17:15


起源



答案:


这里 unicodedata.normalize 可能会帮助你。

基本上,如果您规范化来自数据库的数据,并将您的选择规范化为相同的表单,那么在使用时应该会有更好的结果 str.findstr.__contains__ (即 instr.index, 和朋友。

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

NFC代表着 正常形式组成 形成。你可以读一读 这里 对于其他可能形式的一些描述。


10
2018-03-21 17:28