Como extrair datas de uma String com Python

Duas tarefas muito comum enquanto trabalhamos como Programador é a manipulação de Strings e de datas, em Python, fazer esse trabalho é uma tarefa relativamente simples e divertida de fazer, apesar de que fazer cálculos ou outras tarefas mais complexas com datas não seja algo tão trivial assim, existem diversas bibliotecas que facilitam e muito essa atividade. Continua comigo nesse post que te mostro como extrair datas de Strings com Python rápido e fácil.

Explicando o contexto

Outro dia estava trabalhando num Crawler e o objetivo final era obter uma data em meio a um texto na página HTML, no mesmo instante pensei, ah! Simples, regex resolve isso num piscar de olhos! E resolve mesmo, inclusive vou te mostrar aqui duas formas de fazer essa tarefa, uma é usando expressões regulares, com o módulo builtin de re do Python e a outra forma é usando a lib datefinder.

Outra opção

Se você preferir, pode assistir ao vídeo desse post, aproveita e inscreva-se no Canal Django Pro e ative as notificações, assim você ficará sabendo de tudo assim que eu postar algo novo!

Sem muito delongas, show me the code!

Vamos por partes!

Primeiro vamos fazer uso do módulo nativo, ou seja, o re. O que você precisa saber é basicamente o essencial sobre expressões regulares, até porque esse assunto é algo que assusta muita gente, mas aqui faremos uso simplesmente de grupos e voialá, a coisa vai está funcionando, lembrando que sempre vão existir os prós e contras de cada uma das formas que você escolher.

Linha por linha

Vamos lá… Na primeira linha, temos a importação do módulo de regex do Python, na segunda linha, temos uma variável com uma String e uma data e, na terceira linha é onde realmente a “mágica” acontece, onde é feita a extração da data encontrada! Na linha quatro, é o resultado da execução da linha anterior, o método .group() é quem retorna o dado encontrado.

Tudo bem até aqui? Show! Porém, nem tudo são flores… 😐 Com essa forma, temos a vantagem de ter feito usando os recursos nativos da linguagem, mas para ser mais preciso e menos falho, você vai precisar criar uma expressão regular bem mais abrangente, visto que existem diversas formas e se escrever uma data, certo?

Jeito nutela – brincadeiras a parte, essa lib é Top!

Seguindo em frente, veremos agora como fazer essa mesma tarefa com a lib datefinder, primeira coisa, obviamente é instalar a mesma em nosso ambiente, como ela não faz parte da biblioteca padrão do Python, temos que instalá-la.

pip install datefinder

Bom, estou considerando que você já tem um ambiente virtual todo pronto e já em uso, por isso que não entrarei em detalhes sobre isso aqui, aproveite e comente aí, me diz se você tem interesse nesse assunto, configuração de um ambiente Python de desenvolvimento, vai que eu escrevo um post aqui sobre isso! 😀

Após a instalação, a lib está pronta pra uso, obviamente e, o código acima demonstra como pode ser feita sua utilização, vou explicar também linha por linha.

Na linha 1, temos a importação dela, na linha 2 uma variável com nossa String, a mesma variável inclusive, do primeiro exemplo. Na linha 3 fazemos a chamada do método .find_dates() e passamos pra ele a nossa string, como pode existir mais de uma data no texto, o retorno desse método é um iterável, por isso o loop for na linha 4, dentro do loop fizemos a impressão das datas encontradas e na linha 6, o resultado de fato.

Melhorando nosso resultado

Basicamente é isso, mas existe uma variação de uso, passando o parâmetro source=True, com esse parâmetro ativado, o retorno será uma tupla com a data exatamente como ela aparece no seu texto, veja um exemplo.

Observe que a mudança foi nas linhas 3 e 6, na chamada do método .find_dates() temos agora o parâmetro source=True e, como disse no parágrafo anterior, o tipo de retorno também é diferente, agora temos uma tupla, detalhe, se você deseja simplesmente a data, como ela é, você pode acessar o índice 1 da tupla retornada, por exemplo: print(data[1]), pronto!

Conclusões

E aí, o que achou desse post? Gostou? Agora é a sua vez, comente, compartilhe com os amigos e nas redes sociais, espalhe conhecimento e sabedoria para as pessoas! 😎

Ahhhhh! Temos outros posts aqui no blog também, dar uma navegada, talvez seja útil pra você!

Um forte abraço, beijo no coração de vocês! Fiquem com Deus e até o próximo post!!! Fui…

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *