python字符串条奇怪的行为

时间:2018-08-09 18:37:00

标签: python string python-2.7 strip

我为什么有这种字符串剥离行为?这是我遗失的bug还是某种字符串魔术

# THIS IS CORRECT
>>> 'name.py'.rstrip('.py')
'name'


# THIS IS WRONG     
>>> 'namey.py'.rstrip('.py')
'name'

# TO FIX THE ABOVE I DID THE FOLLOWING
>>> 'namey.py'.rstrip('py').rstrip('.')
'namey'

1 个答案:

答案 0 :(得分:1)

这是因为str.rstrip()命令删除了每个结尾字符,而不是整个字符串。

https://docs.python.org/2/library/string.html
  

string.rstrip(s [,chars])      返回删除了结尾字符的字符串副本。如果省略了char或None,则将删除空格字符。如果给定且不是None,则char必须是字符串; 字符串中的字符将从调用此方法的字符串结尾处去除

This also generates same result
>>> 'nameyp.py'.rstrip('.py')
'name'

您可以尝试str().endswith

>>> name = 'namey.py'
... if name.endswith('.py'):
...     name = name[:-3]

>>> name
'namey'

或者只是str().split()

>>> 'namey.py'.split('.py')[0]
'namey'