如何从字符串末尾移除子串(移除字符串后缀)?
我有以下代码:
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 及更新版本中,你可以使用 removeprefix
和 removesuffix
方法来从字符串的任一侧去掉整个子字符串:
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)