如何从右侧开始一次替换string.replace-python

如何从右侧开始一次替换string.replace-python,python,regex,Python,Regex,如何从右侧开始一次替换string.replace 我可以从左边做 >>> x = 'foo bar bar' >>> x.replace(' ', ' X ', 1) 'foo X bar bar' 或使用re.sub: >>> import re >>> re.sub(' ', ' X ', x, 1) 'foo X bar bar' 从右边看,我可以做到: >>> x = 'foo bar bar

如何从右侧开始一次替换string.replace

我可以从左边做

>>> x = 'foo bar bar'
>>> x.replace(' ', ' X ', 1)
'foo X bar bar'
或使用
re.sub

>>> import re
>>> re.sub(' ', ' X ', x, 1)
'foo X bar bar'
从右边看,我可以做到:

>>> x = 'foo bar bar'
>>> x[::-1].replace(' ', ' X ', 1)[::-1]
'foo bar X bar'

但是,一旦从右边开始,有没有其他替代方法呢?

首先,我认为你的方法是可以的。一行,很像蟒蛇

评论()中提出的问题提供了几个有用的答案,值得衡量

一个是您正在采取的相同方法:
x[:-1]。替换(“”,'x',1)[:-1]
,另一个是使用
rsplit
join

我分析了两者,这是我得到的结果:

$python -mtimeit -s "s = 'foo bar bar'" "s[::-1].replace(' ', ' X ', 1)[::-1]"
1000000 loops, best of 3: 1.18 usec per loop

$python -mtimeit -s "s = 'foo bar bar'" "' X '.join(s.rsplit(' ',1))"
1000000 loops, best of 3: 0.8 usec per loop
因此,我的建议是第二种方法,它似乎要快得多。话虽如此,不管你选择哪一个,在告诉
#这是对的旁边放一条评论因为任何一种方式都不清楚代码的作用:)


希望这有帮助

您使用的方法有什么问题?