0

可能重复:
python .rstrip 删除了一个额外的字符

我有一个字符串vtype定义为

vtype = "vidis.fit"

我想去掉决赛dis.fit,所以

vtype.rstrip("dis.fit")

但最终结果是v,而不是vi,我期望/想要的。我对此有点困惑,有人吗?

编辑

感谢大家。我想它首先让我感到困惑的原因是,命名lstriprstrip似乎暗示了一些序列,尽管它只对空格很重要。

4

3 回答 3

2

rstrip实际上在要剥离的字符串末尾采用一系列字符,而不是要剥离的特定字符串。它正在删除i因为i在传入的字符序列中。

例如,字符的顺序rstrip无关紧要:

>>> vtype = "vidis.fit"
>>> vtype.rstrip("dis.fit")
'v'
>>> vtype.rstrip("ditfs.")
'v'

字符出现在其中的次数也不是:

>>> vtype.rstrip("ditffffsssss.")
'v'

正如文档所指定的:

chars 参数不是后缀;相反,它的值的所有组合都被剥离

编辑: 为了好玩,如果您真的想解决“如何在字符串末尾删除字符串”问题,请使用rfind切片:

>>> vtype[:vtype.rfind("dis.fit")]
'vi'
于 2012-07-16T16:46:26.073 回答
2

"v" 后面的 "i" 被删除,因为它是 'dis.fit' 中的一个字符。to 的参数strip不是要删除的子字符串,而是要删除的字符列表。

于 2012-07-16T16:46:53.000 回答
1

如其他答案所示, rstrip 需要删除一系列字符,而不是特定字符串。

"vidis.fit".replace("dis.fit", "") 

实际上会做你想做的事情......除非“dis.fit”序列可能出现不止一次,或者出现在不同的位置。在这种情况下,您可能可以制定一些正则表达式解决方案。

于 2012-07-16T16:52:23.593 回答