过滤字符串中的字符

时间:2013-08-11 15:32:42

标签: python string iteration

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

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

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

这是我一直在玩的,但我不明白我该怎么做。

2 个答案:

答案 0 :(得分:17)

只需使用str.translate()

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

来自documentation

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

删除s deletechars的所有字符(如果存在),然后使用table翻译字符,该字符必须为256-字符串,为每个字符值提供翻译,由其序号索引。 如果table为无,则仅执行字符删除步骤。

如果 - 出于教育目的 - 你想自己编写代码,你可以使用类似的东西:

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

答案 1 :(得分:3)

使用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)