if __name__ == "__main__":
long_str = '0000123456789'
short_str = '00123456789'
print(f'rstrip:{long_str.rstrip(short_str)}')
print(f'split:{long_str.split(short_str)[0]}')
sys.exit()
rstrip:
split:00
rstrip()不应该是从右侧清楚指定的short字符串,得到‘00’么?
那是你没有仔细去阅读rstrip函数的使用说明
rstrip里传入的参数是一个字符串,但是不是当做字符串来用的
它是当做一个字符数组来用的,所有里面出现的字符,从右到左的依次都删掉,而不是将完整匹配的字符串删掉
不是,strip()里是一个字符集,依次检查字符串的两端(或一端),凡是在字符集里的字符都会被删掉,直到出现一个不在字符集的字符为止,删的过程中不考虑字符集的顺序
如果想严格匹配顺序,可以使用startswith() 或endswith()先判断是否含有该字符串。
首先要先弄清楚rstrip(string)的具体含义,如long_str.rstrip(short_str),可以理解成:要删除的是short_str字符串中字符集合,
也就是long_str中以尾部开始包含“0“、“1”、“2”....."9”这10个字符,都需要删除,所以“0000123456789”都需要删除。比如把long_str改成“2360000123456789”,仍然还是全部删除。
实验如下:
>>> long_str = '2360000123456789'
>>> short_str = '00123456789'
>>> print(f'rstrip:{long_str.rstrip(short_str)}')
rstrip:
>>>
rstrip()是去除右边的空白字符,你想用的是 rsplit()吧