9

我需要创建一个函数,该函数将两个字符串作为输入并返回 str 1 的副本,其中删除了 str2 中的所有字符。

首先是用 for 循环遍历 str1,然后与 str2 进行比较,以完成减法,我应该创建一个第三个字符串来存储输出,但在那之后我有点迷失了。

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 个字符的字符串,给出每个字符值的翻译,按其序数索引。如果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 回答