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

为何Python的rstrip方法会移除超出预期的字符?

Python中rstrip('/api')结果不符合预期的原因及解决方法

当执行代码'https://odinultra.ai/api'.rstrip('/api')时,预期得到'https://odinultra.ai',但实际返回的是'https://odinultra.',这是因为对rstrip()方法的工作逻辑存在误解。

核心原因:rstrip处理的是字符集合而非完整子串

Python的rstrip()方法接收的参数是字符的集合,而不是要移除的完整子串。它会从字符串右侧开始逐个检查字符,只要当前字符属于参数中的任意一个(这里是'/'、'a'、'p'、'i'),就会被移除,直到遇到不在该集合中的字符才停止。

对应到这个例子:
原字符串末尾的'/api'会被逐个拆解移除,之后继续检查前面的'i'(来自.ai的i),因为i也在字符集合里,所以会被继续移除,直到遇到.(不在'/api'字符集合中)才停止,最终得到'https://odinultra.'。

正确移除特定后缀的方法

如果需要精准移除字符串右侧的特定子串,而非任意匹配的字符,可以用以下两种方式:

  1. 通过endswith判断+切片(兼容所有Python 3版本)
s = 'https://odinultra.ai/api'
suffix = '/api'
if s.endswith(suffix):
    s = s[:-len(suffix)]
# 执行后s的值为:'https://odinultra.ai'
  1. 使用removesuffix方法(Python 3.9及以上版本)
    Python 3.9新增了str.removesuffix()方法,专门用于移除指定后缀:
'https://odinultra.ai/api'.removesuffix('/api')
# 返回结果:'https://odinultra.ai'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:26:01