str.strip() strange behavior

前端 未结 5 615
隐瞒了意图╮
隐瞒了意图╮ 2020-11-27 08:25
>>> t1 = "abcd.org.gz"
>>> t1
\'abcd.org.gz\'
>>> t1.strip("g")
\'abcd.org.gz\'
>>> t1.strip("gz")
         


        
相关标签:
5条回答
  • 2020-11-27 08:57

    as far as I know strip removes from the beginning or end of a string only. If you want to remove from the whole string use replace.

    0 讨论(0)
  • 2020-11-27 09:05

    strip(".gz") removes any of the characters ., g and z from the beginning and end of the string.

    0 讨论(0)
  • 2020-11-27 09:10

    The argument given to strip is a set of characters to be removed, not a substring. From the docs:

    The chars argument is a string specifying the set of characters to be removed.

    0 讨论(0)
  • 2020-11-27 09:11

    x.strip(y) will remove all characters that appear in y from the beginning and end of x.

    That means

    'foo42'.strip('1234567890') == 'foo'
    

    becuase '4' and '2' both appear in '1234567890'.


    Use os.path.splitext if you want to remove the file extension.

    >>> import os.path
    >>> t1 = "abcd.org.gz"
    >>> os.path.splitext(t1)
    ('abcd.org', '.gz')
    
    0 讨论(0)
  • 2020-11-27 09:17

    In Python 3.9, there are two new string methods .removeprefix() and .removesuffix() to remove the beginning or end of a string, respectively. Thankfully this time, the method names make it aptly clear what these methods are supposed to perform.

    >>> print (sys.version)
    3.9.0 
    >>> t1 = "abcd.org.gz"
    >>> t1.removesuffix('gz')
    'abcd.org.'
    >>> t1
    'abcd.org.gz'
    >>> t1.removesuffix('gz').removesuffix('.gz')
    'abcd.org.'     # No unexpected effect from last removesuffix call
     
    
    0 讨论(0)
提交回复
热议问题