2013-08-11 3 views
4

Мне нужно сделать функцию, которая принимает две строки как imnput и возвращает копию строки 1 со всеми символами из str2, удаленных.Фильтрация символов из строки

Прежде всего, нужно перебирать строку str1 с помощью цикла for, а затем сравнивать с str2, чтобы выполнить вычитание. Я должен создать третью строку, в которой будет сохраняться вывод, но после этого я немного потерял.

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

Это то, с чем я играл, но не понимаю, как я должен действовать.

ответ

11

Просто используйте str.translate():

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

От documentation:

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

Удалить все символы из s, которые находятся в deletechars (если таковой имеется), а затем переводить символы с помощью table, который должен быть 256-символьная строка дает перевод для каждого значения символа, индексированный по его порядковое. Если table - None, то выполняется только шаг удаления символов.

Если - для образовательных целей - Вы хотите, чтобы закодировать его самостоятельно, вы могли бы использовать что-то вроде:

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

Это работает, и я понимаю, как, но я не думаю, что это было строго, как я должен был его достичь. – SunshineTS

1

Использование replace:

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

Или простой список понимание:

''.join(c for c in str1 if c not in str2) 
Смежные вопросы