Home > Software design >  ValueError: could not convert string to float: ' caing low enough for rotary follow on' |
ValueError: could not convert string to float: ' caing low enough for rotary follow on' |

Time:08-13

I have a python script that iterate among data format values and returns back just hour.

Below is the similar script(that I use for iteration):

zaman = "06:00:00"          (hours:minutes:seconds)
hm = zaman.split(":")
vaxt = [hm[1]]
saat = float(hm[0])   float(float(hm[1])/60)
print(f"{saat:,.2f}")

In one of the files which has several rows I get the error: ValueError: could not convert string to float: ' caing low enough for rotary follow on'

I have checked myself, that this row do not differ from the previous ones, but I get an error on that one.

Do you have suggestions on how to solve it? (may be getting hours from DateTime in another way)

CodePudding user response:

The issue is that you're not correctly identifying the datetime in the string, so you end up trying to convert the wrong bit to a float.

One potential fix for this would be to not rely on splitting the string at the :s, but instead to use a regex to look for the part of the string with the appropriate format.

For example:

import re

test_string = 'this is a string with 06:00:00 in it somewhere'

matches = re.search('(\d{2}):(\d{2}):(\d{2})', test_string)
matches = [float(m) for m in matches.groups()]

print(matches)
# [6.0,0.0,0.0]

CodePudding user response:

I have tested the code you provided above and it works. However, after doing some research it appears:

The Python "ValueError: could not convert string to float" occurs when we pass a string that cannot be converted to a float (e.g. an empty string or one containing characters) to the float() class. To solve the error, remove all unnecessary characters from the string.

So check your file to make sure the input is clean for float() to work perfectly.

  • Related