如何从右侧开始一次替换string.replace-python
如何从右侧开始一次替换string.replace 我可以从左边做如何从右侧开始一次替换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
>>> 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
因此,我的建议是第二种方法,它似乎要快得多。话虽如此,不管你选择哪一个,在告诉#这是对的旁边放一条评论代码>因为任何一种方式都不清楚代码的作用:)
希望这有帮助 您使用的方法有什么问题?