9 votes

Filtrer les caractères d'une chaîne

Je dois créer une fonction qui prend deux chaînes de caractères en entrée et renvoie une copie de la chaîne 1 avec tous les caractères de la chaîne 2 supprimés.

La première chose à faire est d'itérer sur str1 avec une boucle for, puis de comparer avec str2, pour réaliser la soustraction je devrais créer une 3ème chaîne dans laquelle stocker la sortie mais je suis un peu perdu après cela.

def filter_string(str1, str2):
    str3 = str1   
    for character in str1:
       if character in str2:
           str3 = str1 - str2
    return str3

C'est ce que j'ai essayé de faire, mais je ne comprends pas comment procéder.

27voto

NPE Points 169956

Il suffit d'utiliser str.translate() :

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'

De la documentation :

string.translate(s, table[, deletechars])

Supprimer tous les caractères de s qui sont dans deletechars (s'il est présent), puis traduire les caractères en utilisant 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 table est Aucun, alors seule l'étape de suppression des caractères est effectuée.

Si, à des fins pédagogiques, vous souhaitez coder vous-même, vous pouvez utiliser quelque chose comme.. :

''.join(c for c in str1 if c not in str2)

5voto

lecodesportif Points 1892

Utilisez replace :

def filter_string(str1, str2):
    for c in str2:
        str1 = str1.replace(c, '')
    return str1

Ou une simple compréhension de liste :

''.join(c for c in str1 if c not in str2)

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