2013-05-06 37 views
2

刪除某個字符串的最後一位,遵循某種可識別的模式的最佳方法是什麼? 例如:替換模式後的字符串的最後一部分

s = 'some Strings-and-stuff - SomeOther Strings-and-stuff - TAke.THis last -part away.txt'

將返回:

'some Strings-and-stuff - SomeOther Strings-and-stuff'

一些功能,查找模式「-」,並出現最後' - '後刪除最後一個字符串操作的時候。

編輯:答案是給定爲:

new_string = ' - '.join(s.split(' - ')[0:-1]) 

其他的事情我想:

>>> re.sub(r'(.*) - ', '', s[::-1])[::-1] 
'some Strings-and-stuff' 

使用建議.split()功能,我可以通過這個得到的輸出:

>>> p = s.split(' - ') 
>>> p.pop() 
'TAke.THis last -part away.txt' 
>>> ' - '.join(p) 
'some Strings-and-stuff - SomeOther Strings-and-stuff' 

它的工作原理,但另一個建議的答案是一個更好的方式來擺脫非單線程pop()del函數。

+1

斯普利特「 - 「,刪除最後一塊,並解決其餘的問題。 – HamZa 2013-05-06 18:25:51

+0

字符串的初始部分如何識別? – Ewan 2013-05-06 18:26:46

+0

他實際上希望連字符後面的兩個部分被刪除。 @chase我想你必須提供你想要刪除的模式,以便爲此建議一個正則表達式。 – 2013-05-06 18:32:41

回答

2

這將使你在一個單一的線所需的結果後指數:

s = " - ".join(s.split(' - ')[:-1]) 
+0

謝謝@AlagappanRamu,這是一個很好的答案,正是我所需要的。 – chase 2013-05-06 18:52:00

2

你想使用split爲此!

In [130]: s = 'some Strings-and-stuff - SomeOther Strings-and-stuff - TAke.THis last -part away.txt' 

In [131]: s.split(" - ")[0:-1] 
Out[131]: ['some Strings-and-stuff', 'SomeOther Strings-and-stuff'] 

當您通過拆分「 - 」這將返回有會在字符串中由被分離項目清單「 - 」。

然後你從第一個項目,直到最後一個項目,這就是爲什麼有[0:-1]分割

相關問題