2014-03-02 75 views
1

用點分隔的字符串的最後一部分,怎麼可能以優雅的方式字符串轉換,如:刪除在Python

'test.test1.test2' 
'test.test3.test4' 

成字符串像這樣:

'test.test1' 
'test.test3' 

回答

7

無需正則表達式這裏。

使用str.rsplit()

output = inputstr.rsplit('.', 1)[0] 

str.rpartition()

output = inputstr.rpartition('.')[0] 

str.rpartition()是兩個的速度快,但你需要的Python 2.5或更新它。

演示:

>>> 'test.test1.test2'.rsplit('.', 1)[0] 
'test.test1' 
>>> 'test.test1.test2'.rpartition('.')[0] 
'test.test1' 
>>> 'test.test3.test4'.rsplit('.', 1)[0] 
'test.test3' 
>>> 'test.test3.test4'.rpartition('.')[0] 
'test.test3' 

和反對一百萬的運行時間比較:

>>> from timeit import timeit 
>>> timeit("s.rsplit('.', 1)[0]", "s = 'test.test1.test2'") 
0.5848979949951172 
>>> timeit("s.rpartition('.')[0]", "s = 'test.test1.test2'") 
0.27417516708374023 

在那裏你可以運行100萬str.rsplit()的價格200萬個str.rpartition()電話。

2

使用rsplit從端分流,限制在1分:

your_string.rsplit('.', 1) 
+0

newString = oldString.rsplit( '',1)[0] - 做工不錯!非常感謝答覆 – Konstantin