给定一个不需要的字符列表,如何剥离字符串?python

给定一个不需要的字符列表,如何剥离字符串?python,python,string,strip,Python,String,Strip,在python中,是否有方法将列表而不是字符传递到str.strip()?我一直这样做: unwanted = [c for c in '!@#$%^&*(FGHJKmn'] s = 'FFFFoFob*&%ar**^' for u in unwanted: s = s.strip(u) print s 期望的输出,这个输出是正确的,但是应该有一种比我上面的编码方式更优雅的方式: oFob*&%ar 因为您希望不删除中间的元素,所以可以使用 >>>

在python中,是否有方法将列表而不是字符传递到
str.strip()
?我一直这样做:

unwanted = [c for c in '!@#$%^&*(FGHJKmn']
s = 'FFFFoFob*&%ar**^'
for u in unwanted:
  s = s.strip(u)
print s
期望的输出,这个输出是正确的,但是应该有一种比我上面的编码方式更优雅的方式:

oFob*&%ar

因为您希望不删除中间的元素,所以可以使用

>>> 'FFFFoFob*&%ar**^'.strip('!@#$%^&*(FGHJKmn')
'oFob*&%ar'
否则,请使用


Strip和friends使用表示一组字符的字符串,因此您可以跳过循环:

>>> s = 'FFFFoFob*&%ar**^'
>>> s.strip('!@#$%^&*(FGHJKmn')
'oFob*&%ar'

(这样做的缺点是,
fn.rstrip(“.png”)
似乎对许多文件名都有效,但实际上并不有效)

在不需要的字符列表中有
F
,但输出中仍然有
F
。是否需要?上面列出的输出是正确的。我只是用一种不那么优雅的方式来做,
s='mKm'
,您想要的输出是什么?你的代码计算正确吗?它应该为's='mKm'@TimPietzcker打印一个
'
,有趣的是,我的输出是
'K'
,而不是
'mKm'
,你知道为什么吗?strip ignore
len(str)==1
?这不会从字符串中间删除字符
translate
有。没有,但问题中的示例代码也没有从字符串中间删除内容,因此我认为这不是问题所在。+1,因为我认为它实际上实现了OP想要的功能,而不是他当前的代码。@pts发现了这一点,真是太好了。
str.translate()
删除了中间的字符,因此我可以使用字符的列表理解。然后,
strip()
方法完成您的工作,只需将字符串作为参数传递。
>>> s = 'FFFFoFob*&%ar**^'
>>> s.strip('!@#$%^&*(FGHJKmn')
'oFob*&%ar'