4

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

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

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

oFob*&%ar
4

2 回答 2

7

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

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

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

于 2013-07-22T08:17:22.810 回答
4

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

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

否则,使用str.translate().

>>> 'FFFFoFob*&%ar**^'.translate(None, '!@#$%^&*(FGHJKmn')
'oobar'
于 2013-07-22T08:16:13.547 回答