从右边开始如何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'
但从右边开始有没有其他方法可以替换?
答案 0 :(得分:1)
首先,我认为你的方法还可以。 Oneliner,漂亮的pythonic。
评论中提出的问题(Right-to-left string replace in Python?)提供了一些值得衡量的有用答案。
一种方法与您采用的方法相同:x[::-1].replace(' ', ' 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
所以我的建议是第二种看起来快得多的方法。话虽如此,无论你选择哪一个,都会在评论# this is right replacing!
旁边发表评论,因为这两种方式都不清楚代码的作用:)
希望这有帮助!