我有一个字符串vtype
定义为
vtype = "vidis.fit"
我想去掉决赛dis.fit
,所以
vtype.rstrip("dis.fit")
但最终结果是v
,而不是vi
,我期望/想要的。我对此有点困惑,有人吗?
编辑
感谢大家。我想它首先让我感到困惑的原因是,命名lstrip
和rstrip
似乎暗示了一些序列,尽管它只对空格很重要。
我有一个字符串vtype
定义为
vtype = "vidis.fit"
我想去掉决赛dis.fit
,所以
vtype.rstrip("dis.fit")
但最终结果是v
,而不是vi
,我期望/想要的。我对此有点困惑,有人吗?
编辑
感谢大家。我想它首先让我感到困惑的原因是,命名lstrip
和rstrip
似乎暗示了一些序列,尽管它只对空格很重要。
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'
"v" 后面的 "i" 被删除,因为它是 'dis.fit' 中的一个字符。to 的参数strip
不是要删除的子字符串,而是要删除的字符列表。
如其他答案所示, rstrip 需要删除一系列字符,而不是特定字符串。
"vidis.fit".replace("dis.fit", "")
实际上会做你想做的事情......除非“dis.fit”序列可能出现不止一次,或者出现在不同的位置。在这种情况下,您可能可以制定一些正则表达式解决方案。