2011-10-05 190 views
3

後,我有一個字符串有兩個「 - 」蟒蛇:分割字符串的字符

467.2-123-hdxdlfow 

我想之後的第二去除一切「 - 」讓我得到「467.2-123」。做這個的最好方式是什麼?

回答

6
In [6]: "-".join('467.2-123-hdxdlfow'.split('-')[0:2]) 
Out[6]: '467.2-123' 
0

嘗試此正則表達式

([^-]*-[^-]*)-.* 

和詢問的結果對於第一捕獲組((...)中的例子)。

2
>>> s = '467.2-123-hdxdlfow' 
>>> s[:s.rfind('-')] 
'467.2-123' 
+0

我最喜歡這個,因爲它適用於任何數量的破折號 - 它會擺脫最後一個和任何事後:) – karnok

13
before, sep, after = theString.rpartition("-") 

此拆分海峽關於最後一次出現「 - 」和你的回答將是可變的before

1
a='467.2-123-hdxdlfow' 
'-'.join(a.split('-')[:2]) 

如果你有確切2 ' - ',你可以做

a.rsplit('-',1)[0] 
0

你可以試試這個result = re.sub("([^-]*-[^-]*)(-.*$)", r"\1", '467.2-123-hdxdlfow')467.2-123

2

如果你是一切,但最後一個元素之後,我有修改spicavigo的答案排除最後一個元素。

a='467.2-123-hdxdlfow' 
'-'.join(a.split('-')[:-1])