J'ai reçu la tâche de supprimer tous les caractères non numériques, y compris les espaces d'un fichier texte ou d'une chaîne, puis d'imprimer le nouveau résultat à côté des anciens caractères, par exemple:
Avant:
sd67637 8
Après:
sd67637 8 = 676378
Comme je suis débutant, je ne sais pas par où commencer cette tâche. Veuillez aider
La façon la plus simple est avec une expression rationnelle
import re
a = 'lkdfhisoe78347834 (())&/&745 '
result = re.sub('[^0-9]','', a)
print result
>>> '78347834745'
Faites une boucle sur votre chaîne, caractère par caractère et n'incluez que des chiffres:
new_string = ''.join(ch for ch in your_string if ch.isdigit())
Ou utilisez une expression régulière sur votre chaîne (si à un moment donné vous vouliez traiter séparément les groupes non contigus) ...
import re
s = 'sd67637 8'
new_string = ''.join(re.findall(r'\d+', s))
# 676378
Ensuite, il suffit de print
les sortir:
print(old_string, '=', new_string)
Il y a un intégré pour cela.
string.translate (s, table [ deletechars])
Supprimez tous les caractères des s qui sont dans deletechars (le cas échéant), puis traduisez les caractères à l'aide de la table, qui doit être une chaîne de 256 caractères donnant la traduction de chaque valeur de caractère, indexée par son ordinal. Si la table est Aucun, alors seule l'étape de suppression de caractère est effectuée.
>>> import string
>>> non_numeric_chars = ''.join(set(string.printable) - set(string.digits))
>>> non_numeric_chars = string.printable[10:] # more effective method. (choose one)
'sd67637 8'.translate(None, non_numeric_chars)
'676378'
Ou vous pouvez le faire sans importation (mais il n'y a aucune raison à cela):
>>> chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> 'sd67637 8'.translate(None, chars)
'676378'
Vous pouvez utiliser string.ascii_letters
pour identifier vos non-chiffres:
from string import *
a = 'sd67637 8'
a = a.replace(' ', '')
for i in ascii_letters:
a = a.replace(i, '')
Si vous souhaitez remplacer deux points, utilisez des guillemets "
au lieu de deux points '
.