关于python行为笨拙的rstrip:';HelloWorld';。rstrip(';World';)删除';他';

关于python行为笨拙的rstrip:';HelloWorld';。rstrip(';World';)删除';他';,python,string,Python,String,我最近开始学习python,在rstrip中遇到了一个尴尬的行为 我的理解是str.rstrip()将在遇到参数中的某个字符时立即删除所有字符 >>> a = 'HelloWorld' >>> a.rstrip('l') 'HelloWorld' >>> a = 'HelloWorld' >>> a.rstrip('World') 'He' 我完全被我得到的结果搞糊涂了 第一个代码不应该生成“He”吗?strip方法会去

我最近开始学习python,在rstrip中遇到了一个尴尬的行为

我的理解是str.rstrip()将在遇到参数中的某个字符时立即删除所有字符

>>> a = 'HelloWorld'
>>> a.rstrip('l')
'HelloWorld'
>>> a = 'HelloWorld'
>>> a.rstrip('World')
'He'
我完全被我得到的结果搞糊涂了


第一个代码不应该生成“He”吗?

strip方法会去除作为参数传递的字符串中的任何字符。由于
l
o
的“世界”
中,它们也会被剥离

从:

字符串中的字符将从调用此方法的字符串末尾剥离


。。。剥离的不是传递的字符串本身,而是它的字符

strip方法去除作为参数传递的字符串中的所有字符。由于
l
o
的“世界”
中,它们也会被剥离

从:

字符串中的字符将从调用此方法的字符串末尾剥离


。。。剥离的不是传递的字符串本身,而是它的字符

它似乎从右边开始,遇到不在作为参数传递的集合中的字符时立即停止。

它似乎从右边开始,遇到不在作为参数传递的集合中的字符时立即停止。

请查看

>>> a = 'HelloWorld'
>>> a.rstrip('l')
'HelloWorld'
>>> a = 'HelloWorld'
>>> a.rstrip('World')
'He'
rstrip
删除其参数中位于所修改字符串右侧的所有字符。因此,由于“世界”都是由“世界”中的字符组成的,所以这些字符被删除
e
不是,所以它停在那里

另一方面,在第一次调用中,
l
实际上不在字符串的右侧(
rstrip
),因此没有任何内容被删除。

请查看

rstrip
删除其参数中位于所修改字符串右侧的所有字符。因此,由于“世界”都是由“世界”中的字符组成的,所以这些字符被删除
e
不是,所以它停在那里

另一方面,在第一次调用中,
l
实际上不在字符串的右侧(
rstrip
),因此不会删除任何内容。

从字符串末尾删除提供给
rstrip()
的字符集中的字符(如果已传递,而不是
None
rstrip()
在字符串中找到不在剥离字符集中的字符后立即停止

因此,对于第一个示例,字符串
a
中的最后一个字符是
'd'
,它不在传递给
rstrip()
的剥离字符集中。因此,不会从原始字符串中剥离任何内容

在第二个示例中,可以从字符串末尾删除集合
'World'
中的任何字符。您将注意到,子字符串
'lloWorld'
包含剥离字符中存在的字符,因此所有这些字符都将被删除,留下
'He'
作为最终结果

但是,请考虑在字符串末尾有一个字符,它不在集合<代码> Word 中,例如完全停止。< /P>

>>> 'HelloWorld'.rstrip('World')
'He'
>>> 'HelloWorld.'.rstrip('World')
'HelloWorld.'
没有任何内容被剥离,因为
不在
'World'

从字符串末尾删除提供给
rstrip()
的字符集中存在的字符(如果已传递,而不是
None
rstrip()
在字符串中找到不在剥离字符集中的字符后立即停止

因此,对于第一个示例,字符串
a
中的最后一个字符是
'd'
,它不在传递给
rstrip()
的剥离字符集中。因此,不会从原始字符串中剥离任何内容

在第二个示例中,可以从字符串末尾删除集合
'World'
中的任何字符。您将注意到,子字符串
'lloWorld'
包含剥离字符中存在的字符,因此所有这些字符都将被删除,留下
'He'
作为最终结果

但是,请考虑在字符串末尾有一个字符,它不在集合<代码> Word 中,例如完全停止。< /P>

>>> 'HelloWorld'.rstrip('World')
'He'
>>> 'HelloWorld.'.rstrip('World')
'HelloWorld.'

由于
'.
不在
'World'

字符串中,因此未剥离任何内容。rstrip
返回已删除尾随字符的字符串副本

因此,
a.rstrip('l')
不会改变任何东西,因为“l”不在末尾

但是,
a.rstrip('World')
将从文本中删除字符串“World”中的所有字符,因为字符串“World”位于末尾


检查此项以进一步阅读:

string.rstrip
返回删除尾随字符的字符串副本

因此,
a.rstrip('l')
不会改变任何东西,因为“l”不在末尾

但是,
a.rstrip('World')
将从文本中删除字符串“World”中的所有字符,因为字符串“World”位于末尾

检查以下内容以进一步阅读:

Python中的
rstrip()
使用一组字符作为参数

>>> a = 'HelloWorld'
>>> a.rstrip('l')
'HelloWorld'
>>> a = 'HelloWorld'
>>> a.rstrip('World')
'He'
如果未提供参数,则默认为空白

当且仅当它在输入字符串的最右边遇到您的字符集中提到的字符时,它才开始从右侧剥离字符集

这就解释了为什么在第一个示例中没有剥离
l

在第二个示例中,
World
与参数中提供的字符集匹配。所以,世界被剥离了,同时也被剥离了中的双
l
o
<