我是个初学者刚开始学蟒蛇。
我已经阅读了rstrip的文档和这里的一些其他问题,但是仍然对rstrip的确切工作方式感到困惑。
我可以理解string.rstrip()是如何工作的,例如:

INPUT:      '   spacious   '.rstrip()
OUTPUT:     '   spacious'

也要明白这一点:
INPUT:      "ABBA".rstrip("AB")
OUTPUT:     ''

但要搞清楚以下几点:
INPUT:     "AABAA".rstrip("A")
OUTPUT:    'AAB'

问题是为什么它的输出是AAB而不是B?因为我觉得字符串开头的AA和字符串结尾的AA都是A的组合
还有这个:
  INPUT:     "ABCABBA".rstrip("AB")
  OUTPUT:    'ABC'

问题是为什么它的输出不是C?我的想法是在开始的时候,AB在中间,AB在结束的时候都应该去掉。
谢谢你抽空回答我的问题!

最佳答案

让我们用你理解的去做,让你去做你不理解的事情。

INPUT:      '   spacious   '.rstrip()
OUTPUT:     '   spacious'

在这里,rstrip()函数将获取字符串并从后面删除所有不需要的字符。(rstripstrip不同,因为rstrip是反向的,它从后面开始。)在这种情况下,您没有传递任何指示要删除哪些内容的字符串,因此它默认为“所有空白”。因此,它所做的是从字符串后面开始,并删除所有空白。它一碰到非空白区域就停止,这就是结果' spacious'的原因。
继续,这里发生了什么?
INPUT:     "AABAA".rstrip("A")
OUTPUT:    'AAB'

这里,你在给rstrip传递一个论点。字符串是所有要删除的内容的列表。在这种情况下,"A"告诉它只从字符串后面去掉字母A。和前面的例子一样,rstrip一旦碰到一个不需要扔掉的角色就会停止。因此,它停在“B”上,就像前面的rstrip停在最右边的字母s上一样。
这应该让最后一个例子有意义。在这里,
INPUT:     "ABCABBA".rstrip("AB")
OUTPUT:    'ABC'

您告诉rstrip从字符串中删除任何后面的AB。所以它会这样做,并停止在第一个字符,您没有剥离,在本例中是C。像往常一样,一旦停下来,一切都会保持原来的样子。

10-07 13:44