Python中rstrip()函数工作原理及异常返回结果问题排查
为什么
rstrip(".com")返回cis而不是cisco? 嘿,我懂你为啥困惑了——rstrip()的工作逻辑和你预想的完全不一样!它不是匹配整个后缀字符串,而是从字符串末尾开始,逐个移除出你传入的字符集合里的字符,直到碰到不在这个集合里的字符才会停下。
咱们一步步拆解你的例子:
my_str = 'cisco.com' print(my_str.rstrip(".com"))
你传入的.com会被当成一个字符集合:{'.', 'c', 'o', 'm'}。现在从右往左逐个检查字符:
- 最后一个字符是
m,在集合里 → 移除,剩下cisco.co - 下一个是
o,在集合里 → 移除,剩下cisco.c - 下一个是
c,在集合里 → 移除,剩下cisco. - 下一个是
.,在集合里 → 移除,剩下cisco - 下一个是
o,在集合里 → 移除,剩下cisc - 下一个是
c,在集合里 → 移除,剩下cis - 下一个是
i,不在集合里 → 停止操作
这就是你得到cis而不是预期cisco的原因啦。
那怎么正确得到cisco?
如果你的需求是移除特定后缀.com,这几种方法更靠谱:
- 方法一:用
split()分割取第一部分(适合字符串只有一个.的情况)my_str = 'cisco.com' print(my_str.split('.')[0]) # 输出: cisco - 方法二:用
rsplit()从右侧分割一次(适合字符串可能有多个.,但只想去掉最后一个后缀的情况)my_str = 'cisco.com' print(my_str.rsplit('.', 1)[0]) # 输出: cisco - 方法三:先检查是否以
.com结尾,再切片移除my_str = 'cisco.com' if my_str.endswith('.com'): print(my_str[:-4]) # 输出: cisco
内容的提问来源于stack exchange,提问作者kiran Kumar
相关产品推荐
相关产品推荐

