En Python, comment puis-je analyser une chaîne numérique comme "545.2222" à sa valeur flottante correspondante, 542.2222? Ou analyser la chaîne "31" en un entier, 31?
Je veux juste savoir comment analyser une chaîne flottante en flottant et (séparément) une chaîne int en un int.
Il est bon que vous demandiez de les faire séparément. Si vous les mélangez, vous pouvez vous préparer à des problèmes plus tard. La réponse simple est:
"545.2222"
flotter:
>>> float("545.2222")
545.2222
"31"
à un entier:
>>> int("31")
31
Autres conversions, entiers vers et depuis les chaînes et les littéraux:
Conversions de différentes bases, et vous devez connaître la base à l'avance (10 est la valeur par défaut). Notez que vous pouvez les préfixer avec ce que Python attend pour ses littéraux (voir ci-dessous) ou supprimer le préfixe:
>>> int("0b11111", 2)
31
>>> int("11111", 2)
31
>>> int('0o37', 8)
31
>>> int('37', 8)
31
>>> int('0x1f', 16)
31
>>> int('1f', 16)
31
Si vous ne connaissez pas la base à l'avance, mais vous savez qu'ils auront le bon préfixe, Python peut en déduire cela si vous passez 0
comme base:
>>> int("0b11111", 0)
31
>>> int('0o37', 0)
31
>>> int('0x1f', 0)
31
Littéraux non décimaux (c'est-à-dire entiers) d'autres bases
Si votre motivation est que votre propre code représente clairement des valeurs spécifiques codées en dur, cependant, vous n'aurez peut-être pas besoin de convertir à partir des bases - vous pouvez laisser Python le faire automatiquement pour vous avec la syntaxe correcte.
Vous pouvez utiliser les préfixes apropos pour obtenir la conversion automatique en entiers avec les littéraux suivants . Ceux-ci sont valables pour Python 2 et 3:
Binaire, préfixe 0b
>>> 0b11111
31
Octal, préfixe 0o
>>> 0o37
31
Hexadécimal, préfixe 0x
>>> 0x1f
31
Cela peut être utile lors de la description des indicateurs binaires, des autorisations de fichier dans le code ou des valeurs hexadécimales pour les couleurs - par exemple, notez les guillemets:
>>> 0b10101 # binary flags
21
>>> 0o755 # read, write, execute perms for owner, read & ex for group & others
493
>>> 0xffffff # the color, white, max values for red, green, and blue
16777215
Rendre les octaux ambigus de Python 2 compatibles avec Python 3
Si vous voyez un entier qui commence par un 0, en Python 2, il s'agit de la syntaxe octale (obsolète).
>>> 037
31
C'est mauvais car il semble que la valeur devrait être 37
. Donc, en Python 3, il soulève maintenant un SyntaxError
:
>>> 037
File "<stdin>", line 1
037
^
SyntaxError: invalid token
Convertissez vos octals Python 2 en octaux qui fonctionnent à la fois en 2 et 3 avec le 0o
préfixe:
>>> 0o37
31
type(my_object)
à lui. Le résultat peut généralement être appelé en tant que fonction pour effectuer la conversion. Par exemple, lestype(100)
résultats enint
, vous pouvez donc appelerint(my_object)
pour essayer de convertirmy_object
en un entier. Cela ne fonctionne pas toujours, mais c'est une bonne "première estimation" lors du codage.