Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python & Regex deu match!!!

Python & Regex deu match!!!

Palestra apresentada pela Sancha Azevedo na 53º Python Floripa on-line https://www.youtube.com/watch?v=-ybYcPhymGo

23f134e5e0567efeff45ecfaa8702f37?s=128

Python Floripa

December 17, 2020
Tweet

Transcript

  1. Python e Regex deu match! Palestrante: MSc. Sancha Azevedo.

  2. 2 Apresentação

  3. • “O que significa mesmo Regex? “ Regex: Introdução 3

    Regex: Introdução
  4. • A sigla Regex é originada de: • Expressões Regulares

    (Regular Expressions). 4 Regex: Introdução
  5. • Regex & Python • Muitas Linguagens de programação dão

    suporte ao Regex. • Python: • Linguagem Intuitiva. • Amplo uso comercial. • Suporta Regex (em biblioteca específica e em outras como pandas). 5 Regex: Introdução
  6. Regex: Introdução “Regex é útil para que mesmo???” 6

  7. • Onde o Regex pode ser aplicado? • Validação de

    entrada de dados. • Teste de Software. • Ciência/mineração de Dados. • Processos ETL (Extract, Transform, Load). • Construção de parsers. • Tarefas diárias, etc. • Sempre que for necessário buscar por um padrão em um string. 7 Regex: Introdução
  8. • De forma Geral: • Para descrever um padrão em

    strings(texto). • Permite buscar, substituir e dividir strings que “casam” com o padrão descrito. • Usar uma quantidade mínima de código. Regex: Introdução 8
  9. • Aplicabilidade - Exemplo: • Considere o trecho de um

    txt, mostrado a seguir: Regex: Introdução 251:identifying spider bites 252:history of orcas island 253:tooth abscess 254:barrett's esophagus 255:teddy bears 256:patron saint of mental illness 257:holes by louis sachar 258:hip roof 259:carpenter bee 260:the american revolutionary 9 Texto da Trec: Web 2014 topics
  10. • Aplicabilidade - Exemplo: • Precisamos apenas do texto. •

    Para obter o texto apenas, é preciso encontrar/remover Números do Texto: Regex: Introdução 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary 10
  11. • Aplicabilidade - Exemplo: • Precisamos apenas do texto. •

    Para obter o texto apenas, é preciso encontrar/remover Números do Texto: Regex: Introdução Números seguem um padrão?? 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary 11
  12. • Aplicabilidade - Exemplo: • Observa-se o padrão, descreve-o em

    um regex e aplica ao texto. Regex: Introdução 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary identifying spider bites history of orcas island tooth abscess barrett's esophagus teddy bears patron saint of mental illness holes by louis sachar hip roof carpenter bee the american revolutionary 12
  13. • Exemplo : Regex: Introdução 13 Dados Extraídos da coleção

    Crimes do Kaggle
  14. • Exemplo : Se desejarmos obter apenas informações de crimes

    que ocorreram de madrugada? Regex: Introdução 14 Dados Extraídos da coleção Crimes do Kaggle
  15. 15 Regex: Introdução

  16. Breve Histórico: Regex: Introdução 16

  17. • Breve Histórico: • Início das expressões regulares (e modelo

    de rede neural proposto): • 1943: artigo publicado: “A logical calculus of the ideas immanent in nervous activity” pelos neurofisiologistas: Warren McCulloch and Walter Pitts. • Criação dos termos: conjuntos regulares e expressões regulares: • 1956: artigo publicado “Representation of events in nerve nets and finite automata” por Stephen Kleene. • Estensão do estudo de Kleene: • 1968: Ken Thompson, conhecido pelo projeto e implementação do UNIX e da linguagem B, publicou o artigo: “Regular Expression Search Algorithm”. Regex: Introdução 17
  18. Regex: Teoria 18

  19. • Definição: • Uma expressão regular (ER) sobre um alfabeto

    Σ é indutivamente definida como se segue: • ∅ é uma ER que denota a linguagem vazia. • ε é uma ER que denota a linguagem contendo exclusivamente a palavra vazia, ou seja {ε}. • Qualquer símbolo x pertencente ao alfabeto Σ é uma ER e denota a linguagem contendo a palavra unitária x, ou seja {x}. Regex: Teoria 19
  20. • Definição (continuação..): • Se r e s são ERs

    e denotam respectivamente as linguagens R e S, respectivamente, então: • 1. (r+s) é ER e denota a linguagem R ∪ S • 2. (rs) é ER e denota a linguagem {uv | u∈R e v∈S} • 3. (r*) é ER e denota a linguagem R* Regex: Teoria 20
  21. 21 Conhecendo Regex

  22. 22 Conhecendo Regex • Regex é composto: • Metacaracteres -

    Caracteres com significado especial. • Caracteres – utilizados no “casamento” do padrão. • Ex.: .* (banana | laranja | manga) metacaracter Reconhece: Eu gosto de banana Eu não gosto de laranja Eu gosto de manga caractere Não Reconhece: Eu gosto de abacaxi
  23. Metacaracteres 23 Conhecendo Regex MetaCaracter Descrição Exemplo [ ] Um

    conjunto de caracteres “[a-z]” \ Para caractere de escape ou ‘especiais’ “\d” . Qualque caractere, exceto \n “.o" ^ Início "^Bom " $ Fim “Adeus$" * Zero ou mais ocorrências “noo*ssa" + Uma ou mais ocorrências “nos+a" {} No de ocorrências entre {} “xbacon{2}" | Ou “fica|sai" () grupo “boa-(tarde|noite)
  24. 24 Conhecendo Regex • Exemplos: Padrão: [0-9]+ • Casam: ab12,

    345, xy0998 • Não casam: abc, x_y Padrão: ^[0-9]+ Casam: 345, 998abc Não casam: abc, ab12 Padrão: ^[0-9]+$ Casam: 345, 4 Não casam: abc, 12ab33 • Exemplos: Padrão: ^[a-z]+$ • Casam: “aurana”, “loja” • Não casam: “Rua Acre n 12” • Exemplos: Padrão: ^[a-zA-Z0-9\s]+$ • Casam: “Rua Acre n 12, “A” ”1” • Não casam: “Rua A_12”
  25. 25 Praticando Regex no Python

  26. Vamos identificar os números e “:” do arquivo com python?

    26 Praticando Regex no Python 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary
  27. Buscando o padrão.. 27 • Saída: Praticando Regex no Python

    Obs: ❖ Também pode usar a função findall : busca todas as substrings que casam com padrão ❖ match(): se o regex casa com o início da string Search: Busca uma localização onde a string ‘casa’
  28. Vamos indentificar os números e “:” do arquivo com python?

    • Saída: 28 Praticando Regex no Python
  29. 29 • Saída: Vamos indentificar os números e “:” do

    arquivo com python?
  30. 30 • Saída: Vamos indentificar os números e “:” do

    arquivo com python?
  31. Usando Split para separar os números do texto 31 •

    Saída: Praticando Regex no Python
  32. Vamos filtrar o dataframe para conter somente ocorrências na madrugada?

    32 Praticando Regex no Python
  33. Buscando padrão na coluna OCURRED_ON_DATE, TRAZ LINHAS DOS DADOS QUE

    CASAM COM PADRÃO 33 Praticando Regex no Python
  34. 34 Praticando Regex no Python

  35. • “Tão Simples quanto um comando de busca e tão

    poderoso quanto uma linguagem de programação.” Jefrey E. F. Friedl • Contato: fcasancha@gmail.com 35 Agradecimentos e contato