2010-07-12 3 views
3

Comment puis-je vérifier si le premier élément de la liste (ci-dessous) est un numéro (en utilisant une sorte d'expression régulière) en python:Comment vérifier si un élément d'une liste est un nombre?

temp = ['1', 'abc', 'XYZ', 'test', '1'] 

Un grand merci.

+5

Si une réponse répond à vos besoins, n'hésitez pas à la cocher en vert. :-) – eruciform

+0

@eruciform: Dit le gars avec le plus de votes à côté de sa réponse :) – Stephen

Répondre

11
try: 
    i = int(temp[0]) 
except ValueError: 
    print "not an integer\n" 

try: 
    i = float(temp[0]) 
except ValueError: 
    print "not a number\n" 

Si cela doit se faire avec une expression régulière:

import re 
re.match('^[-+]?(([0-9]+([.][0-9]*)?)|(([0-9]*[.])?[0-9]+))$', temp[0]) 
+1

Si vous allez vérifier d'autres choses à l'intérieur du bloc try, assurez-vous que 'excepté ValueError' –

+0

Comment cela at-il le plus votes? Vide sauf, sérieusement? Edit: Oh, il l'a réparé maintenant .. encore, pourquoi ne pouvez-vous pas utiliser regex comme il l'a demandé, ou l'une des fonctions intégrées? Ceci est un code lourd – Bartek

+0

Je suis tout pour lui dire la bonne chose à faire, mais vous avez explicitement ignoré la partie de la question qui dit "utiliser une expression régulière" :) – Stephen

1

Utilisation d'expressions régulières (parce que vous avez demandé):

>>> import re 
>>> if re.match('\d+', temp[0]): print "it's a number!" 

Sinon, essayez d'analyser comme un entier et la prise l'exception:

>>> int(temp[0]) 

Bien sûr, tout cela devient (un peu) plus compliqué si vous voulez des flottants, des négatifs, des notations scientifiques, etc. Je vais laisser cela comme exercice au demandeur :)

+0

Merci beaucoup pour votre aide les gars. – DGT

4

Si vous attendez simplement un nombre positif simple , vous pouvez utiliser la méthode isDigit de Strings.

if temp[0].isdigit(): print "It's a number" 
Questions connexes