Sua aplicação recebe uma string que possui um número, mas a forma da string pode variar. Neste post, mostro como extrair apenas a parte numérica da string.
A primeira coisa que vamos precisar é de realizar uma importação:
import re
Agora é só utilizar uma expressão regular para resolver o problema. Qualquer uma das duas tem o mesmo efeito:
- “[^0-9]”
- “\D”
Lembre-se que regex é case sensitive. \d é diferente de \D!
Aplicando o regex:
text = "Out of range value for column 'COL_DA_TABELA' at row 45" regex_syntax = r"\D" num_str = re.sub(regex_syntax, "", text) num = int(num_str) print(num, type(num))
O que o código acima faz:
- Definimos a variável com o texto que vamos analisar;
- Definimos a expressão regular;
- Extraímos uma string que contém apenas números;
- Convertemos esta string em integer;
- Exibimos o resultado;
Existe um ponto de atenção para esta abordagem: Se a sua string possuir mais de 1 grupo de números, o regex vai retornar uma string com todos eles.
Por exemplo, a string “o número 123 é aleatório, mas quero preciso do número 99”, quando processada pelo regex acima, irá retornar: “12399”.
Você pode elaborar a sintaxe da expressão regular, de forma que ela retorne apenas a string com os números que você quer, mas isso vai depender de cada caso.
Espero ter ajudado.
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022