问题是,我有一个 unicode 字符串作为 python sqlite 查询的输入。查询失败('like')。事实证明,字符串 'FRANCE' 没有 6 个字符,它有 7 个。而第七个是。 . . unicode U+FEFF,一个零宽度的不间断空间。
我到底如何在查询之前捕获一类这样的东西?
最佳答案
您可以使用 unicodedata 类别作为 Python 中 unicode 数据表的一部分:
>>> unicodedata.category(u'a')
'Ll'
>>> unicodedata.category(u'.')
'Po'
>>> unicodedata.category(u',')
'Po'
如您所见,标点字符的类别以“P”开头。
所以你需要按字符过滤掉你(使用列表理解)。
也可以看看:
在你的情况下:
>>> unicodedata.category(u'\ufeff')
'Cf'
因此,您可以根据字符的类别执行一些白名单。