我是个初学者刚开始学蟒蛇。
我已经阅读了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()
函数将获取字符串并从后面删除所有不需要的字符。(rstrip
与strip
不同,因为rstrip是反向的,它从后面开始。)在这种情况下,您没有传递任何指示要删除哪些内容的字符串,因此它默认为“所有空白”。因此,它所做的是从字符串后面开始,并删除所有空白。它一碰到非空白区域就停止,这就是结果' spacious'
的原因。继续,这里发生了什么?
INPUT: "AABAA".rstrip("A")
OUTPUT: 'AAB'
这里,你在给rstrip传递一个论点。字符串是所有要删除的内容的列表。在这种情况下,
"A"
告诉它只从字符串后面去掉字母A。和前面的例子一样,rstrip一旦碰到一个不需要扔掉的角色就会停止。因此,它停在“B”上,就像前面的rstrip停在最右边的字母s
上一样。这应该让最后一个例子有意义。在这里,
INPUT: "ABCABBA".rstrip("AB")
OUTPUT: 'ABC'
您告诉rstrip从字符串中删除任何后面的
A
或B
。所以它会这样做,并停止在第一个字符,您没有剥离,在本例中是C
。像往常一样,一旦停下来,一切都会保持原来的样子。