我为什么有这种字符串剥离行为?这是我遗失的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'
答案 0 :(得分:1)
这是因为str.rstrip()命令删除了每个结尾字符,而不是整个字符串。
https://docs.python.org/2/library/string.htmlstring.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'