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

为何Python中"cisco.com".rstrip(".com")返回"cis"而非"cisco"?

为什么"cisco.com".rstrip(".com")返回"cis"而不是"cisco"?

rstrip()的参数不是按完整字符串匹配移除的——它会把参数里的每个字符当成一个独立的字符集合,只要字符串末尾的字符属于这个集合,就会被持续移除,直到碰到不在集合里的字符才停下。

拿你的例子拆解:
原字符串是"cisco.com",参数".com"对应的字符集合是{'.', 'c', 'o', 'm'}。从字符串末尾往前逐个检查:

  • 末尾的m在集合里,移除 → 剩下"cisco.co"
  • 下一个o在集合里,移除 → 剩下"cisco.c"
  • 下一个c在集合里,移除 → 剩下"cisco."
  • 下一个.在集合里,移除 → 剩下"cisco"
  • 下一个o在集合里,移除 → 剩下"cisc"
  • 下一个c在集合里,移除 → 剩下"cis"
  • 再往前是s,不在集合里,停止操作。

所以最终得到的是"cis"。

如果想精准移除末尾的.com完整字符串,有两种更合适的方法:

  • 方法一:用endswith()判断后切片
s = "cisco.com"
if s.endswith(".com"):
    s = s[:-4]
print(s)  # 输出 "cisco"
  • 方法二:用Python 3.9+新增的removesuffix()方法
print("cisco.com".removesuffix(".com"))  # 输出 "cisco"

内容的提问来源于stack exchange,提问作者Moonberry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:42:39