Com regex, vc vai conseguir com certeza casar grupos numéricos e imprimir somente eles.
Sem usar regex, mas com o objetivo de imprimir somente as partes numéricas da string, sem juntar tudo, de forma que a saída para:
"20 de abril de 2019 esse2020 nao vai imprimir 42"
Seja:
20, 2019, 42
Você poderia fazer algo como:
texto_data = '20 de abril de 2019 esse2020 nao vai imprimir 42'
texto_data_tokens = texto_data.split()
tokens_numericos = []
for token in texto_data_tokens:
if all([c.isdigit() for c in token]):
tokens_numericos.append(token)
print(', '.join(tokens_numericos))
Sem regex, deve haver formas mais otimizadas para fazer isso, mas se vc utilizar algumas estruturas de dados disponíveis, consegue chegar no resultado esperado.
No exemplo acima, usamos uma lista, para guardar somente os tokens numéricos, e usando a função join
, imprimimos a lista com o separador ', '. A função all
retorna true quanto todos os elementos da lista são verdadeiros. Como str.isdigit()
retorna booleano, a expressão [c.isdigit() for c in token]
gera uma lista de booleanos.