You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:30:37