Python >> Python tutorial >  >> Python

Python ValueError:kunne ikke konvertere streng til float

Hvis du konverterer et strengobjekt til et flydende komma i Python mange gange, får du en ValueError:kunne ikke konvertere streng til flydende. Normalt sker dette, hvis strengobjektet har en ugyldig flydende værdi med mellemrum eller komma Python vil kaste ValueError, mens det parser ind i strengobjekt til float.

I denne artikel vil vi tage et kig på, hvad denne fejl betyder, og hvordan du løser denne fejl i din kode med eksempler.

ValueError:kunne ikke konvertere streng til float

Hvis vi læser og behandler data fra excel eller CSV, får vi tallene i form af en streng, og i koden skal vi konvertere fra streng til float .

Python har en indbygget float() metode, der kan parse strengen til et flydende kommatal. Denne metode vil være nyttig, når vi skal udføre en matematisk operation på et strengobjekt.

float() metode tillader dig kun at konvertere strenge, der indeholder flydende tal. Det betyder, at du ikke kan konvertere en værdi, hvis 

  • En værdi indeholder mellemrum
  • En værdi indeholder et komma
  • En værdi indeholder specialtegn 

Undtagelse kunne ikke konvertere streng til float

order_value = '12,000'
tax_percentage = 4

tax_amount = (float(order_value)*(tax_percentage / 100))
print("The total tax amount is ", tax_amount)

Output

Traceback (most recent call last):
  File "c:/Projects/Tryouts/main.py", line 4, in <module>
    tax_amount = (float(order_value)*(tax_percentage / 100))
ValueError: could not convert string to float: '12,000'

Lad os tage et simpelt eksempel for at demonstrere ValueError-undtagelsen. I nedenstående kode har vi den samlede ordreværdi i USD, og ​​vi accepterer dette i strengformat og udfører en momsberegning.

Hvis du ser ovenstående kode, har ordreværdien en kommasepareret numerisk værdi, og mens der parses til en float, vil Python kaste ValueError:kunne ikke konvertere streng til float .

Der er et par andre scenarier, hvor du kan få ValueError.

  1. Konvertering af en tom streng til et flydende kommatal
  2. Konvertering af en ikke-flydende streng til et flydende tal

Ret ValueError:kunne ikke konvertere streng til float

Der er flere måder at løse problemet på. Lad os tage et kig på hver af løsningerne.

Løsning 1:Sørg for, at strengen har en gyldig flydende værdi

Den nemmeste måde er at rydde op i dataene eller sende dem i det korrekte format, hvis vi allerede kender dataformatet, før vi konverterer det til float.

Hvis værdien har et komma, mellemrum eller specialtegn, skal den behandles, før den konverteres til flydende.

I nedenstående kode gemmer vi et gyldigt flydende tal som en streng, og senere konverterer vi det til flydende komma for at beregne skat.

Eksempel:

order_value = '12000'
tax_percentage = 4

tax_amount = (float(order_value)*(tax_percentage / 100))
print("The total tax amount is ", tax_amount)

Output

The total tax amount is  480.0

Løsning 2:Brug try-except

Den bedste måde er at håndtere undtagelsen i tilfælde af et ugyldigt dataformat. I nedenstående kode vil den køre koden i prøveblokken. Hvis konverteringen mislykkes, kører den undtagen blokkoden.

Eksempel:

order_value = '12,000'
tax_percentage = 4

try:
    tax_amount = (float(order_value)*(tax_percentage / 100))
    print("The total tax amount is ", tax_amount)
except:
    print ("Order value is invalid")

Output

Order value is invalid