首页 > 解决方案 > Python strip() 删除多余的(不需要的)字符

问题描述

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

word = 'mixed4d_pre_relu'
word.strip('_pre_relu')
Out[5]: 'mixed4d'

这里的输出和预期的一样。

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

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

如您所见,这真的很奇怪。

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

编辑:感谢您的简短说明。我不知道为什么我假设strip()它是一个具体的字符串移除。

标签: python-3.x

解决方案


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

可以做你想做的事情(至少在这种情况下)的替代方法是正则表达式替换:

>>> import re
>>> re.sub(r'_pre_relu$', '', word)
'mixed4d'

这只是在字符串的最后查找文本_pre_relu,因此用作rstrip(). 等效的lstrip()替换是r'^_pre_relu',它会删除字符串开头的文本。


推荐阅读