8 votes

Comment filtrer une chaîne de caractères pour ne contenir que des lettres?

Comment puis-je créer une fonction qui filtrera toutes les lettres non alphabétiques de la chaîne de caractères ? Par exemple, letters("jajk24me") renverra "jajkme". (Il doit s'agir d'une boucle for) et la fonction string.isalpha() m'aidera-t-elle avec ceci ?

Ma tentative:

def letters(input):
    valids = []
    for character in input:
        if character in letters:
            valids.append( character)
    return (valids)

0voto

Noah Cardoza Points 55

Ne pas utiliser de boucle for. Mais ça a déjà été largement couvert.

Cela pourrait être un peu tard, et je ne suis pas sûr de la performance, mais je viens de penser à cette solution qui semble assez astucieuse :

set(x).intersection(y)

Vous pourriez l'utiliser comme ceci :

from string import ascii_letters

def letters(string):
    return ''.join(set(string).intersection(ascii_letters))

REMARQUE : Cela ne préservera pas l'ordre linéaire. Ce qui, dans mon cas d'utilisation, est bien, mais soyez averti.

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