dunossauro / live-de-python

Repositório das lives de python semanais
https://youtube.com/@dunossauro
MIT License
1.19k stars 212 forks source link

[SUGESTÃO] Live de JMESPath #520

Open d3cryptofc opened 4 months ago

d3cryptofc commented 4 months ago

Muito tempo atrás assisti ao vídeo chamado Selenium com Python palestra - Conhecendo XPATH com Renne Rocha, e com ele conheci o XPATH pela primeira vez, coisa mais linda que que me fez largar o bs4 no mesmo instante, e com ele também me foi apresentado a biblioteca parsel, biblioteca excelente esta que não só dá suporte ao XPATH e CSS Selector, como também ao assunto da vez: JMESPath - 'JamesPath'.

No entanto diferente de XPATH e CSS Selector, o alvo de expressões JMESPath são formatos JSON.

ListComps gigantes? não mais.

Demonstração

JSON:

[
  {"name": "John", "age": 32, "address": {"state": "CA"}},
  {"name": "James", "age": 30, "address": {"state": "CA"}},
  {"name": "Jacob", "age": 46, "address": {"state": "CA"}},
  {"name": "Alex", "age": 42, "address": {"state": "CA"}}
]

Python:

old_people = [
  person["name"]
  for person in data
  if person['age'] > 30 and person['address']['state'] == 'CA'
]

JMESPath:

[?age > `30` && address.state == 'CA'].name

Materiais