在过滤器中使用引号扫描会引发错误
Scan with quotes in filter throws an error
我正在使用 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\': \''
none 的方法。这可能有些愚蠢,但它让我发疯。
我正在考虑正则表达式,也许我会给它类似 institution_id?: ?my_value
和 ?
的东西来告诉它任何字符都可以,但我对正则表达式一无所知所以...
幸好你想到了正则表达式,我不知道为什么即使转义引号它也不起作用(我希望知道的人会向我们解释一下),但这里有一些东西可以让你继续:
f = "SingleColumnValueFilter ('input', '', =,'regexstring:.*institution_id.: ." + your_value + ".*')"
.
表示任何字符,因此这次引号不会触发错误。
我也是正则表达式的初学者,所以我希望任何人都能改进、编辑该行。
我正在使用 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\': \''
none 的方法。这可能有些愚蠢,但它让我发疯。
我正在考虑正则表达式,也许我会给它类似 institution_id?: ?my_value
和 ?
的东西来告诉它任何字符都可以,但我对正则表达式一无所知所以...
幸好你想到了正则表达式,我不知道为什么即使转义引号它也不起作用(我希望知道的人会向我们解释一下),但这里有一些东西可以让你继续:
f = "SingleColumnValueFilter ('input', '', =,'regexstring:.*institution_id.: ." + your_value + ".*')"
.
表示任何字符,因此这次引号不会触发错误。
我也是正则表达式的初学者,所以我希望任何人都能改进、编辑该行。