从字符串中删除子字符串时出现意外结果

时间:2018-04-03 20:30:45

标签: python substring python-2.x strip

我有一个字符串s,我想从中删除'.mainlog'。我试过了:

>>> s = 'ntm_MonMar26_16_59_41_2018.mainlog'
>>> s.strip('.mainlog')
'tm_MonMar26_16_59_41_2018'

为什么n被移除'ntm...'

同样,我有另一个问题:

>>> s = 'MonMar26_16_59_41_2018_rerun.mainlog'
>>> s.strip('.mainlog')
'MonMar26_16_59_41_2018_reru'

为什么python坚持要从我的字符串中删除n?如何从字符串中正确删除.mainlog

4 个答案:

答案 0 :(得分:2)

来自Python文档:

https://docs.python.org/2/library/string.html#string.strip

目前,它试图删除你提到的所有字符('。',' m',' a'' i&# 39; ...)

您可以改用string.replace。

s.replace('.mainlog', '')

答案 1 :(得分:2)

如果您阅读str.strip的文档,您会看到:

  

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

因此,'.mainlog'['.', 'm', 'a', 'i', 'n', 'l', 'o', 'g'])中的所有字符都会从开头到结尾被删除。

你想要的是str.replace'.mainlog'替换所有出现的s.replace('.mainlog', '') #'ntm_MonMar26_16_59_41_2018'

"devDependencies": {
    "bower": "1.8.4"
}

答案 2 :(得分:1)

您使用的功能错误。 strip从字符串的开头和结尾删除字符。默认情况下为空格,但您可以提供要删除的字符列表。

您应该使用:

s.replace('.mainlog', '')

或者:

import os.path
os.path.splitext(s)[0]

答案 3 :(得分:1)

strip函数的参数,在这种情况下,.mainlog不是字符串,而是一组单独的字符。

删除该列表中的所有前导和尾随字符。

如果我们传入参数aiglmno.,我们会得到相同的结果。