Donc, à titre d'exemple, disons qu'il n'y a qu'une seule ligne de code dans le programme, et que cette ligne de code est n = input ()
, et disons que l'utilisateur a entré < code> random123 . Comment puis-je faire en sorte que lorsque j'imprime n
, il n'imprime que les entiers de n
, ou 123? Notez que je veux que cela fonctionne même si l'entrée utilisateur est random123random456
. Si l'utilisateur saisit IS "random123random456", je souhaite qu'il imprime 123456
.
3 Réponses :
Vous pouvez utiliser une expression de générateur avec un appel à la méthode str.isdigit
comme filtre:
''.join(c for c in n if c.isdigit())
test = "123string456" output = str() for each in test: try: n = int(each) output = "{}{}".format(output,n) except: pass print(output)
Je recommande fortement de remplacer sauf:
par sauf ValueError:
. Voir Qu'est-ce qui ne va pas avec l'utilisation d'un "sauf" nu? .
Un autre moyen rapide consiste à supprimer tout caractère non numérique de la chaîne avec expressions régulières Exemple: Ici \ D signifie tout caractère différent de 0 ... 9
Vous pouvez ensuite le remplacer par un caractère vide Quelques résultats: Meilleures salutations >>> import re
>>> re.sub('\D', '', 'random123random456')
'123456'
>>> re.sub('\D', '', 'random123')
'123'
import re
test = "123string456"
result = re.sub('\D', '', test)