2013-02-05 219 views
0

我需要一個優化的方法來替換從字符串中的'/'開始的所有結尾字符。Python:替換從一個字符串開始的字符串

例如:

mytext = "this is my/string" 

我只希望後面的字符串這樣

mytext = "this is my/text" 

結果「/」必須更換,而且必須以最優化的方式來完成。任何人都可以找到我的解決方案?

回答

1

這似乎是最快的:

mytext = "this is my/string" 
mytext = s[:s.rindex('/')] + '/text' 

我測試:

>>> s = "this is my/string" 
>>> pattern = re.compile('/.*$') 

>>> %timeit pattern.sub('/text', s) 
1000000 loops, best of 3: 730 ns per loop 

>>> %timeit s[:s.rindex('/')] + '/text' 
1000000 loops, best of 3: 284 ns per loop 

>>> %timeit s.rsplit('/', 1)[0] + '/text' 
1000000 loops, best of 3: 321 ns per loop 
+0

謝謝@pavel Anossov :) – upv

1

我不知道你是什麼意思優化,但我會做到:

>>> import re 
>>> mytext = "this is my/string" 
>>> re.sub('/.*','/text',mytext) 
'this is my/text' 
0

Reg.exp。是緩慢的,因爲你需要的(?第一)/字符後的所有文字,做到這一點的最好辦法是:

mytext[:mytext.index('/')+1] + 'the replacement text' 

如果你沒有「/」然而,這將失敗。

0

不知道它有多快,也沒有錯誤檢查,但我會找到斜槓和組合字符串。

s = 'this is my/string' 
result = s[:s.find('/')+1]+'text'