有没有办法在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
答案 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'