2016-10-24 1 views
1

En utilisant the Python jmespath library, comment puis-je distinguer "correspond à l'expression, la valeur est None" par rapport à "n'a pas réussi à correspondre à l'expression"?Détecter l'échec de correspondance dans JMESPath

La fonction retourne jmespath.searchNone dans deux cas distincts:

>>> import jmespath 

>>> foo = {'bar': {'lorem': 13, 'ipsum': None}} 
>>> repr(jmespath.search('bar.lorem', foo)) 
'13' 
>>> repr(jmespath.search('bar.ipsum', foo)) # Path matches, value None 
'None' 
>>> repr(jmespath.search('dolor', foo)) # Path does not match 
'None' 

Il semble que la recherche JMESPath API retours None dans ces deux cas distincts. Comment l'appelant peut-il connaître la différence entre eux?

Répondre

0

Actuellement, il semble il n'existe aucun moyen de distinguer un échec de correspondance par rapport à un succès qui renvoie None.

Il ya un open issue requesting that this should change mais pour l'instant la réponse est évidemment "vous ne pouvez pas faire cela avec jmespath".