gpt4 book ai didi

python - 奇怪的 python 正则表达式行为 - 可能连接到 unicode 或 sqlalchemy

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:42 24 4
gpt4 key购买 nike

我正在尝试在 sqlalchemy 结果中搜索模式(实际上是通过“like”或“op”(“regexp”)(模式)进行过滤,我认为它在某处植入了 regex)——字符串和搜索字符串都是希伯来语,大概是(也许我错了-)-unicode其中 r = u'לבן'c = u'לבן, 한וד, '当我执行 re.search(r,c) 时,我得到了 SRE.match 对象但是当我像这样查询数据库时:

f = session.query(classname)
c = f[0].color

c 给我:

'\xd7\x9c\xd7\x91\xd7\x9f,\xd7\x95\xd7\xa8\xd7\x95\xd7\x93,'

打印(c):

לבן,ורוד,

几乎相同,但运行 re.search(r,c) 没有匹配对象。

因为我怀疑是 unicode 问题,所以我尝试使用 unicode(c) 转换为 unicode我得到一个'UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd7:序号'我猜这意味着这已经是unicode字符串 - 那么这里的问题在哪里?我更喜欢使用 sqlalchemy 'like' 但我在那里遇到了同样的问题 = 我肯定知道的地方(正如我在示例中显示的数据包含字符串)

我应该以某种方式转换搜索字符串、模式吗?这与unicode有关吗?还有别的吗?

数据库表(我正在查询)排序规则是 utf8_unicode_ci

最佳答案

c = f[0].color

不是返回一个 Unicode 字符串(或者它的 repr() 会显示一个 u'...' 类型的字符串),而是一个 UTF-8 编码的字符串.

尝试

c = f[0].color.decode("utf-8")

结果

u'\u05dc\u05d1\u05df,\u05d5\u05e8\u05d5\u05d3,'

u'לבן,ורוד,'

如果您的控制台可以显示希伯来语字符。

关于python - 奇怪的 python 正则表达式行为 - 可能连接到 unicode 或 sqlalchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7987981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com