This question already has answers here:
Right-to-left string replace in Python?
                                
                                    (7个答案)
                                
                        
                                5年前关闭。
            
                    
从右边开始,如何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'


但是,从右边开始,还有其他替代方法吗?

最佳答案

首先,我认为您的做法还可以。 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!旁加一个注释,因为哪种方式都不清楚代码的作用:)

希望这可以帮助!

关于python - 从右边开始,如何string.replace? -python ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23317132/

10-15 01:57