在Python中去除字符串前缀时要避免的常见错误

假设你有一个字符串,你想要去除前缀。例如,你有一个字符串s = "Hello, World!",你想要去除前缀"Hello, "。你可能会尝试使用str.lstrip()来实现这个目的。

s = "Hello, World!"
s.lstrip("Hello, ") # "World!"

这似乎可以正常工作,但让我们尝试一些更多的例子,以更好地了解发生了什么。

url = "www.google.com"
url.lstrip("www.") # "google.com"

other_url = "www.wikipedia.com"
other_url.lstrip("www.") # "ikipedia.com"

你可能会问,最后一个例子发生了什么?实际上,str.lstrip()期望的是一个要从字符串中去除的字符列表,而不是一个前缀。因此,当你传递"www."时,它会从字符串的开头去除字符串"www."中的所有字符。事实上,这等同于传递"w."

所以,str.lstrip()实际上并不是适合这个任务的正确工具。相反,你应该使用str.removeprefix()。这个方法被设计用来做你想要的事情 - 从字符串中去除前缀。

url = "www.wikipedia.com"
url.removeprefix("www.") # "wikipedia.com"