在filter中带引号的扫描抛出错误

ctrmrzij  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(367)

我正在使用happybase/python从hbase获取数据,并且我已经使用了一些过滤,但是现在由于某些原因它无法工作。
我的扫描代码的过滤器是这样的:

f = "SingleColumnValueFilter ('input', '', =,'substring:{}')".format(keywork)
res = pTable.scan(reverse=True,limit=1000, filter= f.encode('utf-8'))

顺便说一句,现在哪个工作 input 列有如下记录:

"{'institution_id': '023', 'application_id': '01', 'channel_id...}"

问题是如果我 keyword 比如说:

keywork = "instition_id"

它是有效的,但显然这不是我需要的,所以当把它和我想要的价值联系起来时:

keywork = "instition_id': '"+ my_value

我明白了 thriftpy.transport.TTransportException: TTransportException(type=4, message='TSocket read 0 bytes') 经过新的测试,我得出结论,问题是单引号,但我不知道为什么或如何解决它。我试过了 keywork = "instition_id\': \'" , keywork = 'instition_id\': \'' 这些都不管用。这可能是一些愚蠢的事情,但它让我发疯。
我在想regex,也许我会给它一些 institution_id?: ?my_value? 告诉它任何字符会做的很好,但我不知道任何关于正则表达式,所以。。。

fykwrbwg

fykwrbwg1#

关于regex,你想到了一件好事,我不知道为什么它连转义引号都不起作用(我希望知道的人能向我们解释一下),但这里有一些东西可以让你继续:

f = "SingleColumnValueFilter ('input', '', =,'regexstring:.*institution_id.: ." + your_value + ".*')"

这个 . 表示任何字符,以便引号这次不会触发错误。我也是regex的初学者,所以我希望任何人都能改进、编辑这行代码。

相关问题