9

2 つの文字列を imnput として取り、str2 のすべての文字を削除した str 1 のコピーを返す関数を作成する必要があります。

最初に、for ループを使用して str1 を反復処理し、次に str2 と比較して減算を実行します。出力を格納する 3 番目の文字列を作成する必要がありますが、その後は少し迷っています。

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

これは私が遊んできたものですが、どのように進めればよいかわかりません。

4

2 に答える 2

27

使用するだけstr.translate()です:

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

ドキュメントから:

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

sdeletechars(存在する場合) にあるすべての文字を削除し、 を使用して文字を翻訳しますこれtableは、各文字値の翻訳を与える 256 文字の文字列で、序数によってインデックスが付けられている必要があります。が None の場合、文字削除ステップのみが実行されます。table

-- 教育目的で -- 自分でコーディングしたい場合は、次のようなものを使用できます。

''.join(c for c in str1 if c not in str2)
于 2013-08-11T15:34:51.697 に答える
5

使用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)
于 2013-08-11T15:34:39.450 に答える