Python jmespath选择第一个匹配的属性
我想知道是否有一种简洁的方法可以用jmespath表达Python jmespath选择第一个匹配的属性,python,jmespath,Python,Jmespath,我想知道是否有一种简洁的方法可以用jmespath表达foo.bar | | foo.boo >>> import jmespath >>> jmespath.search("foo.bar||foo.boo", {"foo":{"bar":"a", "boo":"b"}}) 'a' >>> jmespath.search("foo.[bar||boo]", {"foo":{"bar":"a", "boo":"b"}}) ['a'] >
foo.bar | | foo.boo
>>> import jmespath
>>> jmespath.search("foo.bar||foo.boo", {"foo":{"bar":"a", "boo":"b"}})
'a'
>>> jmespath.search("foo.[bar||boo]", {"foo":{"bar":"a", "boo":"b"}})
['a']
>>> jmespath.search("foo.[bar||boo][0]", {"foo":{"bar":"a", "boo":"b"}})
'a'
是否有一种方法将路径表示为foo.(bar | | boo)
导致所需的(scalar
非array
)结果'a'
编辑:
它似乎使用|
而不是
>>> jmespath.search("foo|bar||boo", {"foo":{"bar":"a", "boo":"b"}})
'a'
使用
foo.(bar | | boo)
时会发生什么情况?jmespath.exceptions.ParseError:Expecting:['quoted|u identifier','unquoted|identifier','lbracket','lbrace'],get:lparen:Parse error在第4列,token“(“(lparen),用于表达式:“foo.(bar | | boo)”