Skip to content

Convertir une chaîne en un nombre (int, float) en Python

En Python, vous pouvez convertir une chaîne str en un entier int et un nombre à virgule flottante float avec int() et float().

Cet article décrit le contenu suivant.

  • Convertissez une chaîne en int :int()
  • Convertissez une chaîne en flottant :float()
  • Convertir une chaîne de notation binaire, octale et hexadécimale en int
  • Convertir une chaîne de notation exponentielle en flottant

Utilisez str() pour convertir un entier ou un nombre à virgule flottante en une chaîne.

Vous pouvez également convertir une liste de chaînes en une liste de nombres. Voir l’article suivant.

Convertissez une chaîne en int :int()

int() convertit une chaîne en un entier int.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Une chaîne contenant . ou , génère une erreur.

# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'

# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'

Une chaîne séparée par des virgules peut être convertie en supprimant , avec replace() (remplacer par la chaîne vide  »).

print(int('10,000'.replace(',', '')))
# 10000

Voir l’article suivant pour replace().

Convertissez une chaîne en flottant :float()

float() convertit une chaîne en nombre à virgule flottante float.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Une chaîne sans la partie entière peut également être convertie.

print(float('.23'))
# 0.23

Une chaîne représentant un entier est également convertie en nombre à virgule flottante float.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Convertir une chaîne de notation binaire, octale et hexadécimale en int

Si vous passez un nombre de base au deuxième argument de int(), une chaîne est traitée comme binaire, octale et hexadécimale.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

S’il est omis, il est considéré comme décimal, comme dans les exemples précédents.

print(int('100', 10))
print(int('100'))
# 100
# 100

Si la base est 0, elle est convertie en fonction du préfixe de la chaîne (0b, 0o, 0x ou 0B, 0O, 0X).

print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Les préfixes et les alphabets hexadécimaux peuvent être écrits en majuscules ou en minuscules.

print(int('FF', 16))
print(int('ff', 16))
# 255
# 255

print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255

Pour plus d’informations sur l’interconversion des chaînes binaires, octales et hexadécimales et int, consultez l’article suivant.

Convertir une chaîne de notation exponentielle en flottant

Une chaîne de notation exponentielle peut être convertie en float avec float().

print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>

print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>

Vous pouvez utiliser à la fois e et E.

print(float('1.23E-4'))
# 0.000123