2012-02-17 86 views
2

我試圖剝離部分字符串。在python中刪除部分字符串(最多但不包括)

例如條: -

a = xyz-abc 

離開: -

a = -abc 

我通常會使用lstrip例如

a.lstrip('xyz') 

但在這種情況下,我不知道是什麼某某將是,所以我需要一種方法來只是剝奪一切的左「 - 」。

是否可以使用lstrip設置該選項,還是必須以不同的方式進行設置?

謝謝。

+1

給我們寫一些單元測試,以瞭解它應該如何工作。 – hughdbrown 2012-02-17 02:47:10

回答

3
>>> a = 'xyz-abc' 
>>> a.find('-') # return the index of the first instance of '-' 
3 
>>> a[a.find('-'):] # return the string of everything past that index 
'-abc' 

您可以使用.find的拼寫和拼接。

+0

不錯,謝謝。 – user788462 2012-02-17 03:00:19

6

如果只有一個-字符,這將工作:

'xyz-abc'.split('-')[1] 

如果你想在那裏'-',你必須重新裝上:

>>> '-' + 'xyz-abc'.split('-')[1] 
'-abc' 

還有數參數,可以讓你僅在第一個-角色分割。

>>> '-' + 'xyz-ab-c'.split('-', 1)[1] 
'-ab-c' 

partition也可能有用:

>>> 'xyz-abc'.partition('-') 
('xyz', '-', 'abc') 

它分裂在分離器中第一次出現:

>>> ''.join('xyz-ab-c'.partition('-')[1:]) 
'-ab-c' 
+0

這會擺脫'''',所以你必須做'' - '+ ...'。另外,'.split(' - ',1)'強制它只分裂一次。 – 2012-02-17 02:49:42

+0

@senderie感謝您的快速回復。 – user788462 2012-02-17 03:01:48

2

如果不能保證文本的-左不包含其自身的破折號,find的翻轉版本rfind甚至更​​有用:

>>> s = "xyv-er-hdgcfh-abc" 
>>> print s[s.rfind("-"):] 
-abc 
相關問題