170 votes

Suppression des chiffres d'une chaîne de caractères

Comment supprimer les chiffres d'une chaîne de caractères ?

248voto

RocketDonkey Points 16205

Cela conviendrait-il à votre situation ?

>>> s = '12abcd405'
>>> result = ''.join([i for i in s if not i.isdigit()])
>>> result
'abcd'

Ceci utilise une liste de compréhension, et ce qui se passe ici est similaire à cette structure :

no_digits = []
# Iterate through the string, adding non-numbers to the no_digits list
for i in s:
    if not i.isdigit():
        no_digits.append(i)

# Now join all elements of the list with '', 
# which puts all of the characters together.
result = ''.join(no_digits)

Comme le soulignent @AshwiniChaudhary et @KirkStrauser, vous n'avez pas besoin d'utiliser les parenthèses dans la phrase, ce qui fait de la partie entre les parenthèses une expression génératrice (plus efficace qu'une compréhension de liste). Même si cela ne correspond pas aux exigences de votre devoir, c'est quelque chose que vous devriez lire éventuellement :) :

>>> s = '12abcd405'
>>> result = ''.join(i for i in s if not i.isdigit())
>>> result
'abcd'

117voto

Jon Clements Points 51556

Et, juste pour l'ajouter au mélange, il y a le souvent oublié str.translate qui fonctionnera beaucoup plus rapidement que les boucles et les expressions régulières :

Pour Python 2 :

from string import digits

s = 'abc123def456ghi789zero0'
res = s.translate(None, digits)
# 'abcdefghizero'

Pour Python 3 :

from string import digits

s = 'abc123def456ghi789zero0'
remove_digits = str.maketrans('', '', digits)
res = s.translate(remove_digits)
# 'abcdefghizero'

23voto

Alain Nisam Points 652

Je ne sais pas si votre professeur vous autorise à utiliser des filtres, mais...

filter(lambda x: x.isalpha(), "a1a2a3s3d4f5fg6h")

retours-

'aaasdffgh'

Beaucoup plus efficace que le bouclage...

Ejemplo:

for i in range(10):
  a.replace(str(i),'')

6voto

Pavel Paulau Points 406

Qu'en est-il de ceci :

out_string = filter(lambda c: not c.isdigit(), in_string)

5voto

inspectorG4dget Points 25092

Juste quelques-unes (d'autres ont suggéré certaines d'entre elles)

Méthode 1 :

''.join(i for i in myStr if not i.isdigit())

Méthode 2 :

def removeDigits(s):
    answer = []
    for char in s:
        if not char.isdigit():
            answer.append(char)
    return ''.join(answer)

Méthode 3 :

''.join(filter(lambda x: not x.isdigit(), mystr))

Méthode 4 :

nums = set(map(int, range(10)))
''.join(i for i in mystr if i not in nums)

Méthode 5 :

''.join(i for i in mystr if ord(i) not in range(48, 58))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X