python str.strip奇怪的行为

Tzu*_*hay 4 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'
Run Code Online (Sandbox Code Playgroud)

为什么'.org'的'g'消失了?

Den*_*gan 9

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


ken*_*ytm 8

x.strip(y)将删除y从开头和结尾出现的所有字符x.

这意味着

'foo42'.strip('1234567890') == 'foo'
Run Code Online (Sandbox Code Playgroud)

监守'4',并'2'同时出现在'1234567890'.


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

>>> import os.path
>>> t1 = "abcd.org.gz"
>>> os.path.splitext(t1)
('abcd.org', '.gz')
Run Code Online (Sandbox Code Playgroud)


Sau*_*ahu 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
 
Run Code Online (Sandbox Code Playgroud)