我想在python中删除字符串中的字符:

string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...

但我有很多字符必须删除。我想了一个清单

list = [',', '!', '.', ';'...]

但是如何使用列表来替换字符串中的字符呢?


当前回答

为什么不利用这个简单的函数:

def remove_characters(str, chars_list):
    for char in chars_list:
        str = str.replace(char, '')
  
    return str

使用功能:

print(remove_characters('A.B!C?', ['.', '!', '?']))

输出:

ABC

其他回答

为什么不是一个简单的循环?

for i in replace_list:
    string = string.replace(i, '')

另外,避免将列表命名为“list”。它覆盖内置函数列表。

删除* % @ !从下面的字符串:

s = "this is my string,  and i will * remove * these ** %% "
new_string = s.translate(s.maketrans('','','*%,&@!'))
print(new_string)

# output: this is my string  and i will  remove  these  

您可以使用翻译方法。

s.translate(None, '!.;,')

也许有一种更现代、更实用的方式来实现你的愿望:

>>> subj = 'A.B!C?'
>>> list = set([',', '!', '.', ';', '?'])
>>> filter(lambda x: x not in list, subj)
'ABC'

请注意,对于这个特定的目的,它是相当夸张的,但一旦您需要更复杂的条件,过滤器就会派上用场

另一种使用regex的方法:

''.join(re.split(r'[.;!?,]', s))