如何在给定不需要的字符列表的情况下删除字符串?蟒蛇

时间:2013-07-22 08:14:41

标签: python string strip

有没有办法在python中将列表而不是char传递给str.strip()?我一直这样做:

unwanted = [c for c in '!@#$%^&*(FGHJKmn']
s = 'FFFFoFob*&%ar**^'
for u in unwanted:
  s = s.strip(u)
print s

所需的输出,这个输出是正确的,但应该有一种比我编码它更优雅的方式:

oFob*&%ar

2 个答案:

答案 0 :(得分:7)

Strip和friends会获取一个代表一组字符的字符串,因此您可以跳过循环:

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

(这方面的缺点是像fn.rstrip(".png")这样的东西似乎适用于许多文件名,但实际上并不起作用)

答案 1 :(得分:4)

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

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

否则,请使用str.translate()

>>> 'FFFFoFob*&%ar**^'.translate(None, '!@#$%^&*(FGHJKmn')
'oobar'