Extrair datas de URLs ou nomes de arquivos é uma tarefa comum em automação de processos e limpeza de dados. Este método é o mais eficaz porque combina expressões regulares flexíveis com funções nativas do sistema operacional, permitindo extrair datas em diversos formatos com poucas linhas de código.
Para extrair datas de URLs, usamos expressões regulares para identificar padrões comuns de datas. O script abaixo reconhece datas no formato YYYY-MM-DD, DD-MM-YYYY e MM-DD-YYYY.
import re
def extrair_data_url(url):
padroes = [
r'(\d{4})[-/](\d{2})[-/](\d{2})', # YYYY-MM-DD ou YYYY/MM/DD
r'(\d{2})[-/](\d{2})[-/](\d{4})', # DD-MM-YYYY ou DD/MM/YYYY
r'(\d{2})[-/](\d{2})[-/](\d{2})' # MM-DD-YY ou MM/DD/YY
]
for padrao in padroes:
match = re.search(padrao, url)
if match:
return '-'.join(match.groups())
return None
# Exemplo de uso
url = "https://site.com/2024/03/15/arquivo.pdf"
print(extrair_data_url(url)) # Saída: 2024-03-15
No Windows, podemos usar o PowerShell para extrair datas de nomes de arquivos. O comando abaixo lista todos os arquivos em um diretório e extrai datas no formato YYYY-MM-DD do nome do arquivo.
Get-ChildItem -Path "C:\seu_diretorio" | ForEach-Object {
$nome = $_.Name
$data = [regex]::Match($nome, '\d{4}-\d{2}-\d{2}')
if ($data.Success) {
[PSCustomObject]@{
Arquivo = $nome
Data = $data.Value
}
}
}
No Linux ou Mac, usamos o comando find combinado com o grep para extrair datas de nomes de arquivos. Este método é particularmente útil para processar grandes volumes de arquivos.
find /caminho/para/diretorio -type f -name "*20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]*" | while read arquivo; do
data=$(echo "$arquivo" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}')
echo "Arquivo: $arquivo | Data: $data"
done
| Entrada | Saída Esperada |
|---|---|
| https://site.com/2024/03/15/documento.pdf | 2024-03-15 |
| relatorio_15-03-2024.xlsx | 2024-03-15 |
| backup_2024.03.15.zip | 2024-03-15 |
| https://site.com/03/15/2024/imagem.jpg | 2024-03-15 |
Com este método, você automatiza a extração de datas de URLs e nomes de arquivos em segundos, evitando erros manuais e garantindo consistência nos dados. A combinação de expressões regulares e comandos nativos do sistema operacional oferece uma solução robusta e adaptável a diferentes formatos de data.