使用带有条带的元组()

时间:2015-07-13 21:15:03

标签: python python-3.x split tuples strip

考虑与内置方法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。

1 个答案:

答案 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

因为当这些字符被剥离时,字符串从未在xz中开始或结束; x仅在开始和结束时结束,因为y字符在下一步中被删除。