Convertir une chaîne de caractères en float sous python


Pour convertir une chaîne de caractères en float sous python on peut utiliser la fonction "built-in" intitulée float(), exemple:

>>> s = '3.1415'
>>> type(s)
<class 'str'>
>>> s = float(s)
>>> type(s)
<class 'float'>

Cependant si la chaîne de caractères ne peut pas être convertie en float on va obtenir le message d'erreur suivant

ValueError: could not convert string to float:

pour éviter cela on peut procéder comme suit:

>>> try:
...     float(s)
...     print('True')
... except:
...     print('False')
... 
3.1415
True

ou créer une fonction:

>>> def check_string_to_float(s):
...     try:
...             float(s)
...             print('True')
...     except:
...             print('False')

exemple:

>>> s = '3.1415...'
>>> check_string_to_float(s)
False

Note: si la chaîne de caractères utilise des virgules au lieu de points, on peut utiliser la fonction replace():

>>> s = '3,1415'
>>> check_string_to_float(s)
False
>>> check_string_to_float(s.replace(',','.'))
True

Autre exemple:

>>> s = 'abcd'
>>> check_string_to_float(s)
False

Références