考虑与内置方法tuple
一起使用的基本str.startswith()
:
>>> t = 'x','y','z'
>>> s = 'x marks the spot'
>>> s.startswith( t )
True
使用带有str.strip()
的元组时,似乎需要循环:
>>> for i in t: s.strip(i)
...
' marks the spot'
'x marks the spot'
'x marks the spot'
这或许似乎很浪费;是否有更有效的方法使用str.strip()
的元组项? s.strip(t)
似乎是合乎逻辑的,但是,没有bueno。
答案 0 :(得分:6)
如果字符串以给定文本开头,则剥离字符串是一种非常不同的测试用法,因此这些方法在处理输入方面存在重大差异。
str.strip()
需要一个字符串,该字符串被视为 set 字符;字符串将被删除集合中的每个字符;只要字符串以一个字符作为集合成员的结尾开始,就会删除该开始或结束字符,直到开始和结束都没有给定集合中的任何字符。
如果你有一个元组将它连接成一个字符串:
s.strip(''.join(t))
或以字符串文字传递:
s.strip('xyz')
请注意,这意味着使用str.strip()
与每个单独的元组元素不同!
比较
>>> s = 'yxz_middle_zxy'
>>> for t in ('x', 'y', 'z'):
... print(s.strip(t))
...
yxz_middle_zxy
xz_middle_zx
yxz_middle_zxy
>>> print(s.strip('xyz'))
_middle_
即使您使用单个字符链接str.strip()
次调用,它仍然不会产生相同的输出,因为str.strip()
调用:
>>> for t in ('x', 'y', 'z'):
... s = s.strip(t)
...
>>> print(s)
xz_middle_zx
因为当这些字符被剥离时,字符串从未在x
或z
中开始或结束; x
仅在开始和结束时结束,因为y
字符在下一步中被删除。