web-dev-qa-db-fra.com

Comment puis-je vérifier si une chaîne contient une valeur numérique en Python?

Duplicata possible:
Comment puis-je vérifier si une chaîne est un nombre en Python?
Python - Analyser la chaîne pour flotter ou Int

Par exemple, je veux vérifier une chaîne et si elle n'est pas convertible en entier (avec int()), comment puis-je détecter cela?

41
Figen Güngör

Utilisez la méthode .isdigit() :

>>> '123'.isdigit()
True
>>> '1a23'.isdigit()
False

Citant la documentation:

Renvoie vrai si tous les caractères de la chaîne sont des chiffres et s'il y a au moins un caractère, faux sinon.

Pour les chaînes unicode ou Python 3 chaînes, vous devrez utiliser une définition plus précise et utiliser les unicode.isdecimal() / str.isdecimal() à la place; tous les chiffres Unicode ne sont pas interprétables comme des nombres décimaux. + 00B2 SUPERSCRIPT 2 est un chiffre, mais pas une décimale, par exemple.

46
Martijn Pieters

Vous pouvez toujours try:

try:
   a = int(yourstring)
except ValueError:
   print "can't convert"

Notez que cette méthode surpasse isdigit si vous voulez savoir si vous pouvez convertir une chaîne en nombre à virgule flottante en utilisant float

32
mgilson