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

Python Floripa

December 17, 2020
Tweet

More Decks by Python Floripa

Other Decks in Technology

Transcript

  1. • A sigla Regex é originada de: • Expressões Regulares

    (Regular Expressions). 4 Regex: Introdução
  2. • 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
  3. • 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
  4. • 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
  5. • 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
  6. • 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
  7. • 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
  8. • 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
  9. • 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
  10. • 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
  11. • 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
  12. • 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
  13. 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
  14. 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)
  15. 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”
  16. 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
  17. 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’
  18. Vamos indentificar os números e “:” do arquivo com python?

    • Saída: 28 Praticando Regex no Python
  19. Usando Split para separar os números do texto 31 •

    Saída: Praticando Regex no Python
  20. Buscando padrão na coluna OCURRED_ON_DATE, TRAZ LINHAS DOS DADOS QUE

    CASAM COM PADRÃO 33 Praticando Regex no Python
  21. • “Tão Simples quanto um comando de busca e tão

    poderoso quanto uma linguagem de programação.” Jefrey E. F. Friedl • Contato: [email protected] 35 Agradecimentos e contato