如何使用starts_with来jmespath.search字典键

时间:2019-01-29 23:59:13

标签: python-3.x jmespath

我有一个字典,我想在字典的键上执行嵌套的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中是否有这样做的方法,或者我在做梦?我需要嵌套位

1 个答案:

答案 0 :(得分:0)

令人讨厌的是,答案是查询中的单引号和双引号需要切换...

jmespath.search("keys(@)[?starts_with(@, 'foo')]", jmespath.search('@', d))

有效。