【问题标题】:Using tuple efficiently with strip()通过 strip() 有效地使用元组
【发布时间】:2015-10-02 07:45:26
【问题描述】:

考虑一个基本的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) 似乎合乎逻辑,然而,没有。

【问题讨论】:

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


    【解决方案1】:

    剥离字符串与测试字符串是否以给定文本开头的用例非常不同,因此这些方法在处理输入的方式上存在很大差异。

    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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2015-09-20
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多