Si vous souhaitez convertir une chaîne de chiffres en valeurs numériques en Python, utilisez int() pour convertir en nombres entiers et float() pour convertir en nombres à virgule flottante.
Ce qui suit est expliqué ici, avec un exemple de code.
- Utilisation de base
- Convertir des chaînes numériques en nombres entiers:
int()
- Convertir une chaîne de chiffres en nombres à virgule flottante:
float()
- Convertir des chaînes numériques en nombres entiers:
- Usage spécial
- Convertit les chaînes de caractères en notation binaire, octale et hexadécimale en nombres.
- Convertit les chaînes de caractères en notation exponentielle en valeurs numériques
- Convertir les chaînes de chiffres arabes pleine largeur en nombres
- Convertir une chaîne de caractères chinois en chiffres
Pour convertir une valeur numérique en une chaîne de caractères, utilisez str().
Si vous souhaitez convertir des nombres ou des chaînes de caractères dans différents formats, utilisez la fonction format() ou la méthode str.format(). Vous pouvez alors convertir en notation 0-fill, binaire, octale, hexadécimale, exponentielle, etc. Consultez l'article suivant pour plus de détails.
- RELATED :Conversion de format en Python, format (remplissage de 0, notation exponentielle, hexadécimal, etc.)
Il peut également convertir une liste de chaînes de caractères en une liste de nombres. Voir l'article suivant pour plus de détails.
- Convertir des chaînes numériques en nombres entiers: int()
- Convertir une chaîne de chiffres en nombres à virgule flottante: float()
- Convertit les chaînes de caractères en notation binaire, octale et hexadécimale en nombres.
- Convertit les chaînes de caractères en notation exponentielle en valeurs numériques
- Convertir les chaînes de chiffres arabes pleine largeur en nombres
- Convertir une chaîne de caractères chinois en chiffres
Convertir des chaînes numériques en nombres entiers: int()
Vous pouvez utiliser int() pour convertir une chaîne de chiffres en nombres de type entier.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Les décimales, y compris les points décimaux, et les chaînes de caractères séparées par des virgules entraîneront une ValueError.
# 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'
Les chaînes délimitées par des virgules peuvent être converties en supprimant la virgule (en la remplaçant par une chaîne vide) à l'aide de la méthode replace().
print(int('10,000'.replace(',', '')))
# 10000
Convertir une chaîne de chiffres en nombres à virgule flottante: float()
Un float() peut être utilisé pour convertir une chaîne de chiffres en un type de nombre à virgule flottante.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Les chaînes de caractères dont la partie entière est omise sont converties en complétant la partie entière par 0.
print(float('.23'))
# 0.23
Les chaînes d'entiers sont également converties en nombres à virgule flottante.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Convertit les chaînes de caractères en notation binaire, octale et hexadécimale en nombres.
Si un radix est spécifié comme second argument de int(), la chaîne peut être convertie en un entier int en la considérant comme binaire, octal, hexadécimal, etc.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Comme dans les exemples précédents, s'il est omis, le nombre est considéré comme un nombre décimal.
print(int('100', 10))
print(int('100'))
# 100
# 100
Si le radix est fixé à 0, la conversion est basée sur le préfixe de la chaîne. Voir ci-dessous pour les préfixes de chaîne.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Les préfixes et les alphabets hexagonaux peuvent être 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
Consultez l'article suivant pour obtenir des informations sur l'interconversion des nombres et des chaînes de caractères binaires, octaux et hexadécimaux.
- RELATED :Convertir des nombres et des chaînes de caractères binaires, octaux et hexadécimaux en Python
Convertit les chaînes de caractères en notation exponentielle en valeurs numériques
Les chaînes de caractères en notation exponentielle peuvent être converties directement en type flottant 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'>
Le e minuscule peut également être mis en majuscule.
print(float('1.23E-4'))
# 0.000123
Convertir les chaînes de chiffres arabes pleine largeur en nombres
Les chiffres arabes pleine largeur peuvent être convertis directement en nombres par int() ou float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Toutefois, si des symboles tels que les moins et les points décimaux sont des caractères pleine largeur, une ValueError sera générée.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Les nombres peuvent être convertis sans problème s'ils sont des caractères de pleine largeur, mais les moins et les points décimaux sont des caractères de demi-largeur. La conversion est possible en remplaçant les symboles de pleine largeur par des symboles de demi-largeur à l'aide de la méthode replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Convertir une chaîne de caractères chinois en chiffres
La fonction unicodedata.numeric() du module unicodedata peut être utilisée pour convertir un seul caractère chinois Unicode en un nombre de type virgule flottante.
S'il ne s'agit pas d'une seule lettre, une erreur se produira. De même, les caractères non numériques provoqueront une erreur.
import unicodedata
print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>
print(unicodedata.numeric('十'))
# 10.0
print(unicodedata.numeric('参'))
# 3.0
print(unicodedata.numeric('億'))
# 100000000.0
# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str
# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character