如何使用 starts_with jmespath.search 字典键
How to jmespath.search a dictionary key using starts_with
我有一本字典,我想在字典的键上嵌套 jmespath.search 以查找以特定字符串开头的键,但我似乎只能使用 @
运算符一次。
> d = {'foo1': 'bar', 'foo2' : 'baz'} # here's a dummy example
> jmespath.search('keys(@)[?starts_with(@, "foo")]', jmespath.search('@', d)) # in an ideal world, I'd get ['foo1', 'foo2']
> *** jmespath.exceptions.JMESPathTypeError: In function starts_with(), invalid type for value: None, expected one of: ['string'], received: "null"
这是我实际得到的,但是当我输入以下内容时:
> jmespath.search('keys(@)[?starts_with([@], "foo")]', jmespath.search('@', d)) # in an ideal world, I'd get ['foo1', 'foo2']
我明白了
> *** jmespath.exceptions.JMESPathTypeError: In function starts_with(), invalid type for value: ['foo1'], expected one of: ['string'], received: "array"
在 JMESPath 中有没有办法做到这一点,还是我在做梦?我需要嵌套位
烦,答案是查询中的单引号和双引号需要调换...
jmespath.search("keys(@)[?starts_with(@, 'foo')]", jmespath.search('@', d))
有效。
我有一本字典,我想在字典的键上嵌套 jmespath.search 以查找以特定字符串开头的键,但我似乎只能使用 @
运算符一次。
> d = {'foo1': 'bar', 'foo2' : 'baz'} # here's a dummy example
> jmespath.search('keys(@)[?starts_with(@, "foo")]', jmespath.search('@', d)) # in an ideal world, I'd get ['foo1', 'foo2']
> *** jmespath.exceptions.JMESPathTypeError: In function starts_with(), invalid type for value: None, expected one of: ['string'], received: "null"
这是我实际得到的,但是当我输入以下内容时:
> jmespath.search('keys(@)[?starts_with([@], "foo")]', jmespath.search('@', d)) # in an ideal world, I'd get ['foo1', 'foo2']
我明白了
> *** jmespath.exceptions.JMESPathTypeError: In function starts_with(), invalid type for value: ['foo1'], expected one of: ['string'], received: "array"
在 JMESPath 中有没有办法做到这一点,还是我在做梦?我需要嵌套位
烦,答案是查询中的单引号和双引号需要调换...
jmespath.search("keys(@)[?starts_with(@, 'foo')]", jmespath.search('@', d))
有效。