2
respostas

Converter String (número com virgula) para Float

Boa tarde,

Qual seria a melhor solução para o erro abaixo?

could not convert string to float: '1.025,00'

Sei que poderia dar um replace na vírgula, mas nao sei se seria a melhor solução.

At., Fabiano Dias

2 respostas

Olá, Fabiano. Tudo bem?

Fiz uma solução, mas achei ela bem complexa então também estou esperando uma forma mais fácil hahaha. Além disso minha solução tem uma falha que é: Como transformo em float strings e mantenho os valores depois da virgula?

Segue a resolução que fiz:

numero = '1.025,00'
numero = numero.split(',')[:-1]

Pega os dados somente antes da virgula. A variavel numero após o split virá uma lista.

numero = [float(i) for i in numero_lista][0]

Usando list comprehension, apliquei o método float() para cada número dentro da lista. Como só tem um número, vamos pegar somente o primeiro número e único número.

In [1]: numero
Out [1]: 1.025

Resumindo tudo em bloco:

numero = '1.025,00'
numero = numero.split(',')[:-1]
numero = [float(i) for i in numero_lista][0]
numero

Se quiser algo mais direto, você pode jogar a parte do split já no list comprehension.

numero = '1.025,00'
numero = [float(i) for i in numero.split(',')[:-1]][0]
numero

Espero ter ajudado.

Um abraço, Leo

A solução acima também funciona, no entanto caso seu valor tenha algo depois da virgula ele seria perdido. Nesse caso creio que usar replace seria a melhor opção:

numero  = '1.025,00'

numero = float(numero.replace('.','').replace(',','.'))

Abs!