通过 strip() 有效地使用元组
Using tuple efficiently with strip()
考虑与内置方法 str.startswith()
:
一起使用的基本 tuple
>>> 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)
似乎合乎逻辑,然而,没有布埃诺。
剥离字符串与测试字符串是否以给定文本开头是非常不同的用例,因此这些方法在处理输入的方式上存在重大差异。
str.strip()
接受一个字符串,它被视为一组 个字符;字符串中的每个字符都将被删除;只要字符串开头或结尾的字符是该集合的成员,该开始或结束字符就会被删除,直到开始和结束没有给定集合中的任何字符。
如果你有一个元组将它连接成一个字符串:
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
字符在下一步中被删除。
考虑与内置方法 str.startswith()
:
tuple
>>> 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)
似乎合乎逻辑,然而,没有布埃诺。
剥离字符串与测试字符串是否以给定文本开头是非常不同的用例,因此这些方法在处理输入的方式上存在重大差异。
str.strip()
接受一个字符串,它被视为一组 个字符;字符串中的每个字符都将被删除;只要字符串开头或结尾的字符是该集合的成员,该开始或结束字符就会被删除,直到开始和结束没有给定集合中的任何字符。
如果你有一个元组将它连接成一个字符串:
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
字符在下一步中被删除。