从字符串Python中移除序列中的项

2024-09-29 01:37:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

但是,由于某些原因,当我尝试这个或它的变体时,它只返回原始字符串或只删除了第一个bad_字符项的版本。在

^{pr2}$

有没有一种方法可以从给定的字符串中删除所有有坏字符的项?在


Tags: 函数字符串in列表forreturndefitem
3条回答

尝试将错误字符替换为空字符串。在

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

strip()无法工作,因为它只尝试删除原始字符串的开头和结尾部分。在

strip不是此任务的正确选择,因为它删除了字符串的前导和尾随字符,而可以使用str.translate方法:

>>> s,l="foobar",["o","b"]
>>> s.translate(None,''.join(l))
'far'

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

您可以使用strip消除更多的内部字符,但也需要包括其中一个外部字符。在

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

下面是如何通过字符串连接生成器表达式来完成此操作:

^{pr2}$

相关问题 更多 >