Comment supprimer les chiffres d'une chaîne de caractères ?
Réponses
Trop de publicités?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'
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'
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))
- Réponses précédentes
- Plus de réponses