python str.strip奇怪的行为

时间:2010-06-07 15:50:05

标签: python string

>>> 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 个答案:

答案 0 :(得分:8)

strip从字符串的开头和结尾删除任何字符.gz

答案 1 :(得分:8)

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

这意味着

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

因为'4''2'都出现在'1234567890'


如果要删除文件扩展名,请使用os.path.splitext

>>> import os.path
>>> t1 = "abcd.org.gz"
>>> os.path.splitext(t1)
('abcd.org', '.gz')

答案 2 :(得分:4)

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
 

答案 3 :(得分:1)

赋予strip的参数是要删除的一组字符,而不是子字符串。 From the docs

  

chars参数是一个字符串,指定要删除的字符集。

答案 4 :(得分:1)

据我所知,strip仅从字符串的开头或结尾删除。如果要从整个字符串中删除使用replace。