Wulfram Wulfram - 8 months ago 54
Python Question

What is a clean way to convert a string percent to a float?

I have looked in the standard library and on StackOverflow, and have not found a similar question. So, is there a way to do the following without rolling my own function? Bonus points if someone writes a beautiful function if there is no built in way.

def stringPercentToFloat(stringPercent)
# ???
return floatPercent

p1 = "99%"
p2 = "99.5%"
print stringPercentToFloat(p1)
print stringPercentToFloat(p2)

>>>> 0.99
>>>> 0.995

Answer Source

Use strip('%') , as:

In [9]: "99.5%".strip('%')
Out[9]: '99.5'               #convert this to float using float() and divide by 100

In [10]: def p2f(x):
    return float(x.strip('%'))/100

In [12]: p2f("99%")
Out[12]: 0.98999999999999999

In [13]: p2f("99.5%")
Out[13]: 0.995