2013-08-11 4 views
4

Je dois créer une fonction qui prend deux chaînes comme imnput et renvoie une copie de str 1 avec tous les caractères de str2 supprimés. La première chose est d'itérer sur str1 avec une boucle for, puis comparer à str2, pour accomplir la soustraction, je devrais créer une troisième chaîne dans laquelle stocker la sortie, mais je suis un peu perdu après cela.Filtrage de caractères d'une chaîne

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 joué avec mais je ne comprends pas comment je devrais procéder.

Répondre

11

Il suffit d'utiliser str.translate():

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

De l'documentation:

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

Supprimer tous les caractères de s qui sont dans deletechars (le cas échéant), puis traduire les caractères à l'aide table, qui doit être une chaîne de 256 caractères donnant la traduction pour chaque valeur de caractère, indexé par son ordinal. Si table est Aucune, seule l'étape de suppression de caractères est exécutée.

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

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

Cela fonctionne et je comprends comment, mais je ne pense pas était strictement comment je devais y parvenir. – SunshineTS

1

Utilisation replace:

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

Ou une simple mutation de liste:

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