Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Isdigit

Não é interpretado como fatiamento, mas é interessante ressaltar que para pegar alguma sequência numérica em uma frase, o isdigit pode ser utilizado. Ficaria algo como:

for caracter in sobreMim:
    if caracter.isdigit():
        print(caracter, end="")

Entretanto, caso houvesse mais de uma sequência numérica na frase, elas ficariam juntas. Por exemplo:

data = 20 de abril de 2019

A saída seria: 202019

Creio para sanar isto é preciso o uso de expressões regulares.

1 resposta
solução!

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.