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)