rreplace - 如何替换字符串中最后一次出现的表达式?

218 投票
8 回答
156955 浏览
提问于 2025-04-15 21:06

在Python中,有没有一种快速的方法可以替换字符串,不过不是从头开始像replace那样,而是从字符串的末尾开始替换?比如:

>>> def rreplace(old, new, occurrence)
>>>     ... # Code to replace the last occurrences of old by new

>>> '<div><div>Hello</div></div>'.rreplace('</div>','</bad>',1)
>>> '<div><div>Hello</div></bad>'

8 个回答

25

我不会假装这是最有效的方法,但这是一个简单的方法。它会先把所有的字符串反转,然后在反转后的字符串上用 str.replace 进行普通的替换,最后再把结果反转回正常的方向。

>>> def rreplace(s, old, new, count):
...     return (s[::-1].replace(old[::-1], new[::-1], count))[::-1]
...
>>> rreplace('<div><div>Hello</div></div>', '</div>', '</bad>', 1)
'<div><div>Hello</div></bad>'
94

这里有一个一行代码的例子:

result = new.join(s.rsplit(old, maxreplace))

这个代码会返回一个字符串s的副本,把所有出现的子串old替换成new。最多只替换maxreplace次。

下面是一个完整的示例,展示了如何使用这个代码:

s = 'mississipi'
old = 'iss'
new = 'XXX'
maxreplace = 1

result = new.join(s.rsplit(old, maxreplace))
>>> result
'missXXXipi'
261

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能够做出反应。这种情况下,我们就会用到“事件处理”。简单来说,事件处理就是让程序能够“听到”用户的操作,然后根据这些操作来做出相应的反应。

想象一下,你在玩一个游戏,按下了“开始”按钮,游戏就开始了。这就是一个事件处理的例子。程序在等待你按下按钮,然后根据这个事件来启动游戏。

在编程中,我们通常会定义一些“事件”,然后为这些事件编写“处理程序”。处理程序就是当事件发生时要执行的代码。这样一来,程序就能根据用户的操作来做出不同的反应。

总之,事件处理就是让程序能够对用户的操作做出反应的一种方式。通过这种方式,我们可以让程序变得更加互动和智能。

>>> def rreplace(s, old, new, occurrence):
...  li = s.rsplit(old, occurrence)
...  return new.join(li)
... 
>>> s
'1232425'
>>> rreplace(s, '2', ' ', 2)
'123 4 5'
>>> rreplace(s, '2', ' ', 3)
'1 3 4 5'
>>> rreplace(s, '2', ' ', 4)
'1 3 4 5'
>>> rreplace(s, '2', ' ', 0)
'1232425'

撰写回答