使用带有条带的元组()

l'L*_*L'l 3 python split tuples strip python-3.x

考虑tuple使用内置方法的基本内容str.startswith():

>>> t = 'x','y','z'
>>> s = 'x marks the spot'
>>> s.startswith( t )
True
Run Code Online (Sandbox Code Playgroud)

当使用元组时,似乎需要一个循环str.strip():

>>> for i in t: s.strip(i)
... 
' marks the spot'
'x marks the spot'
'x marks the spot'
Run Code Online (Sandbox Code Playgroud)

这或许似乎很浪费; 是否有更有效的方法来使用元组项目str.strip()s.strip(t)似乎合乎逻辑,但是,没有bueno.

Mar*_*ers 6

如果字符串以给定文本开头,则剥离字符串是一种非常不同的测试用法,因此这些方法在处理输入方面存在重大差异.

str.strip()取一个字符串,将其视为一字符; 字符串将被删除集合中的每个字符; 只要字符串以一个字符作为集合成员的结尾开始,就会删除该起始或结束字符,直到开始和结束都没有给定集合中的任何字符.

如果你有一个元组将它连接成一个字符串:

s.strip(''.join(t))
Run Code Online (Sandbox Code Playgroud)

或者以字符串文字形式传递:

s.strip('xyz')
Run Code Online (Sandbox Code Playgroud)

请注意,这意味着什么不同的使用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_
Run Code Online (Sandbox Code Playgroud)

即使您str.strip()使用单个字符链接了调用,它仍然不会产生相同的输出,因为str.strip()调用:

>>> for t in ('x', 'y', 'z'):
...     s = s.strip(t)
... 
>>> print(s)
xz_middle_zx
Run Code Online (Sandbox Code Playgroud)

因为字符串从未开始或结束,x或者z当这些字符被剥离时; x仅在开始和结束时结束,因为y角色在下一步中被剥离.