strip() 删除多余的(不需要的)字符

bmi*_*lis 1 python

在我的一个项目中,我对以下场景感到震惊:

word = 'mixed4d_pre_relu'
word.strip('_pre_relu')
Out[5]: 'mixed4d'
Run Code Online (Sandbox Code Playgroud)

这里的输出符合预期。

但是,当我执行以下操作时:

word = 'mixed4e_pre_relu'
word.strip('_pre_relu')
Out[5]: 'mixed4'  # No 'e' here, yyy?
Run Code Online (Sandbox Code Playgroud)

有谁知道这种行为的原因是什么?

Gre*_*Guy 5

根据评论,.strip()获取字符列表并删除所有字符 - 不是特别要删除的字符串。它将在字符串的末尾执行此操作,向内移动,直到找到不属于该字符集的内容,此时它将停止。

另一种可以满足您需求的替代方案(至少在本例中)是正则表达式替换:

>>> import re
>>> re.sub(r'_pre_relu$', '', word)
'mixed4d'
Run Code Online (Sandbox Code Playgroud)

这只是查找_pre_relu字符串最末尾的文本,从而充当rstrip(). 等效的lstrip()替换是r'^_pre_relu',它将删除字符串最开头的文本。