Skip to main content
 首页 » 编程设计

python之从字符串 Python 中删除序列中的项目

2025年05月04日15unruledboy

好的,所以我正在尝试制作一个函数,它将接受一个字符串和一系列项目(以列表、元组或字符串的形式)并从字符串中删除该列表中的所有项目。

到目前为止,我的尝试是这样的:

def eliminate(s, bad_characters): 
    for item in bad_characters: 
        s = s.strip(item) 
    return s 

但是,出于某种原因,当我尝试这个或这个的变体时,它只返回原始字符串或仅删除 bad_characters 中第一项的版本。

>>> eliminate("foobar",["o","b"]) 
'foobar' 

有没有办法从给定的字符串中删除 bad_characters 中的所有项目?

请您参考如下方法:

您的解决方案不起作用的原因是因为 str.strip() 仅删除字符串外部的字符,即字符串最左端或最右端的字符。因此,在 'foobar' 的情况下,具有单个字符参数的 str.strip() 仅在您想删除字符 'f' 时才有效 和 'r'。

您可以使用 strip 消除更多内部字符,但您还需要包含一个外部字符。

>>> 'foobar'.strip('of') 
'bar' 
>>> 'foobar'.strip('o') 
'foobar' 

以下是通过字符串连接生成器表达式来完成此操作的方法:

def eliminate(s, bad_characters): 
    bc = set(bad_characters) 
    return ''.join(c for c in s if c not in bc)