ValueError: could not convert string to float in Python

In Python, the string is the sequence of alphabets or numbers enclosed in quotation marks, and the float value is any positive or negative number containing a decimal point. To perform various mathematical operations, fractional strings must be converted to float data types. However, while converting string values to float, users might encounter the “ValueError” due to irrelevant symbols and characters. To fix this error, various functions are used in Python.

This write-up will present the causes and solutions for the “ValueError: could not convert string to float” with appropriate examples. The following terms are discussed in this Python blog post in detail:

So let’s get started!

Reason: Incorrect String Initializing

The “ValueError: could not convert string to float” occurs in Python due to the incorrect initialization of value to a string variable. The string to be converted must not contain any characters or symbols. Only numeric values will be passed inside the string to convert into float. The incorrect string initialization is shown in the below snippet:

The above output shows the string value containing symbols, characters, and numeric values.

Solution 1: Using re.findall() Function

The “re.findall()” function is used in Python to find all the matched patterns and return all non-overlapping matches of the pattern in a list of strings. Let’s have a look at the below code to extract the float value:

Code:

import re

Value2 = 'xyz2.23'

Output = re.findall(r'\d+\.\d+', Value2)
print(Output)

float_value = float(Output[0])
print(float_value)

In the above snippet:

  • The “re.findall()” function is used to find all the digits in the given string using the pattern “\d+\.\d+”.
  • The “re.findall()” function returns a list of strings, and the returned list is converted into float value using the inbuilt “float()” function.

Output:

The above output shows the list of strings followed by the float value.

Solution 2: Using str.replace() Function

The “str.replace()” function is also used to fix the “ValueError: could not convert string to float” by replacing any symbols or characters with an empty string. In the below snippet, the “str.repalce()” function is used to replace the unwanted symbols and strings:

Code:

Value = '9.94%'

float_value = float(Value.replace('%', ''))

print(float_value)
print(type(float_value))

In the above snippet:

  • The “str.replace()” function takes two parameter values. The first parameter takes the substring value or old value that needs to be replaced. A second parameter specifies the new value that will replace the old one.
  • The second parameter is an empty string which means that all the unwanted symbols and characters will be replaced with an empty string.
  • The inbuilt “float()” function converts the newly created strings into floats.

Output:

In the above output, the string value has been converted into float successfully.

Note: The “str.strip()” function removes the leading and trailing characters or symbols from the given string. This method can not remove the characters placed in between the string.

Solution 3: Using try/except Block

The “ValueError” can also be removed using the “try/except” block in Python. An example of this is shown in the below snippet:

Code:

Value = '%9.9%4%'

try:
    Output = float(Value)
except ValueError:
    Output = float(Value.replace('%', ''))

print(Output)
print(type(Output))

In the above code snippet:

  • The string value containing symbols and digits is initialized.
  • The try-except block handles the “ValueError” along with the combination of the “str.repalce()” function.
  • After replacing the unwanted symbols in the except block, the “float()” function converts the string into float.

Output:

The above output verified that the string value had been converted into a float value.

That’s it from this guide!

Conclusion

To fix the “ValueError: could not convert string to float”, the “str.repalce()”, “re.findall()” and “try-except” is used in Python. The “re. findall()” and “str.repalce()” functions are used to remove symbols and characters from the given string. The “float()” function is used along with the combination of both these functions to convert the string value into float. The try-except block is also beneficial to rectify or handle this error in Python script. This Python write-up presented a complete guide on how to fix the “could not convert string to float” error.