如何从字符串末尾移除子串(移除字符串后缀)?

571 投票
25 回答
1066690 浏览
提问于 2025-04-15 12:28

我有以下代码:

url = 'abcdc.com'
print(url.strip('.com'))

我期待的结果是:abcdc

但我得到的结果是:abcd

现在我做了:

url.rsplit('.com', 1)

有没有更好的方法呢?


想了解第一次尝试的具体情况,可以查看 Python中的.strip/.rstrip/.lstrip字符串方法是如何工作的?

25 个回答

73

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会继续进行。比如说,如果你想让程序在用户输入正确的密码后才能进入系统,这就是一个条件判断的例子。

条件判断通常使用“如果”这个词来表示,比如“如果用户输入的密码是正确的,那么就允许他进入”。这样,程序就会检查用户输入的内容是否符合条件,如果符合,就执行后面的操作。

在编程中,这种条件判断可以用不同的方式来实现,具体的写法可能会因为使用的编程语言不同而有所变化。但基本的思路都是一样的,就是根据条件来决定程序的走向。

希望这个解释能帮助你更好地理解条件判断的概念!

def strip_end(text, suffix):
    if suffix and text.endswith(suffix):
        return text[:-len(suffix)]
    return text
110

如果你确定这个字符串只出现在最后,那么最简单的方法就是用'replace'来替换它:

url = 'abcdc.com'
print(url.replace('.com',''))
877

strip 这个方法并不是说“去掉这个子字符串”。当你用 x.strip(y) 时,y 被当作一组字符来处理,它会从 x 的两端去掉这些字符。

Python 3.9 及更新版本中,你可以使用 removeprefixremovesuffix 方法来从字符串的任一侧去掉整个子字符串:

url = 'abcdc.com'
url.removesuffix('.com')    # Returns 'abcdc'
url.removeprefix('abcdc.')  # Returns 'com'

相关的Python增强提案是 PEP-616.

Python 3.8 及更早版本中,你可以使用 endswith 和切片来实现:

url = 'abcdc.com'
if url.endswith('.com'):
    url = url[:-4]

或者使用正则表达式

import re
url = 'abcdc.com'
url = re.sub('\.com$', '', url)

撰写回答