str.strip() 的奇怪行为
>>> t1 = "abcd.org.gz"
>>> t1
'abcd.org.gz'
>>> t1.strip("g")
'abcd.org.gz'
>>> t1.strip("gz")
'abcd.org.'
>>> t1.strip(".gz")
'abcd.or'
为什么'.org'
中的'g'
不见了?
5 个回答
5
在Python 3.9中,新增了两个字符串处理的方法,分别是.removeprefix()
和.removesuffix()
。这两个方法可以用来去掉字符串开头或结尾的部分。幸运的是,这两个方法的名字非常直观,能够清楚地告诉我们它们的功能。
>>> 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
9
x.strip(y)
这个方法会把字符串 x
开头和结尾处所有在 y
中出现的字符都去掉。
这意味着
'foo42'.strip('1234567890') == 'foo'
因为 '4'
和 '2'
都出现在 '1234567890'
这个字符串里。
如果你想去掉文件的扩展名,可以使用 os.path.splitext
这个方法。
>>> import os.path
>>> t1 = "abcd.org.gz"
>>> os.path.splitext(t1)
('abcd.org', '.gz')
10
strip(".gz")
这个函数会把字符串开头和结尾的 .
、g
和 z
这些字符去掉。