如何从右边开始string.replace? -蟒蛇

时间:2014-04-26 22:21:17

标签: 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[::-1].replace(' ', ' X ', 1)[::-1]
'foo bar X bar'

但从右边开始有没有其他方法可以替换?

1 个答案:

答案 0 :(得分:1)

首先,我认为你的方法还可以。 Oneliner,漂亮的pythonic。

评论中提出的问题(Right-to-left string replace in Python?)提供了一些值得衡量的有用答案。

一种方法与您采用的方法相同:x[::-1].replace(' ', ' X ', 1)[::-1],另一种方法是rsplitjoin

我描述了两者,这是我得到的输出:

$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

所以我的建议是第二种看起来快得多的方法。话虽如此,无论你选择哪一个,都会在评论# this is right replacing!旁边发表评论,因为这两种方式都不清楚代码的作用:)

希望这有帮助!