2017-01-02 58 views
-1

假設我有一個字符串:997 668,現在我需要在空間之前刪除任何東西,即我需要668作爲輸出。我需要使用正則表達式的解決方案。現在,我使用的是下面:在Python中使用正則表達式之前刪除所有內容

x = '997 668' 
x = x.split(' ')[1] 

上面也能給輸出,但是當只有一個號碼,如果x = 555,然後輸出來的空白,我不想失敗。

+1

爲什麼你需要一個正則表達式的解決方案?很多時候,正則表達式並不合適,但是提問者經常要求他們提供解決方案。這是一個家庭作業問題,有人強迫你使用正則表達式? (只是好奇) –

+0

'x = x.split('')[0] if「」not in x else x.split('')[1]' –

回答

4

非但沒有第一個項目或兩個項目的第二,只需[-1]得到最後一個項目你自己的代碼將工作:

>>> '996 668'.split()[-1] 
'668' 
>>> '668'.split()[-1] 
'668' 
1

如果你是一個有點防守

try: 
    x = '997 668' 
    x = x.split(' ')[1] 
except IndexError: 
    x = x[0] 
+0

那麼使用異常處理程序有什麼問題? – e4c5

+0

這沒有工作 – Nitin

+0

它工作複製粘貼到python shell。 – e4c5

1

如果輸入有多個空格,如

235 989 877 

那麼y我們的問題有點含糊不清,因爲您沒有說明是否要在第一個空格之前刪除所有內容,或者在最後一個空格之前刪除所有內容。

TigerhawkT3的回答將刪除最後一個空格前的所有內容。

如果你想第一空間之前刪除一切,你需要的第二個參數split,做這樣說:

>>> '996 668'.split(' ', 1)[-1] 
'668' 
>>> '996'.split(' ', 1)[-1] 
'996' 
>>> '996 351 980 221'.split(' ', 1)[-1] 
'351 980 221' 

注意TigerhawkT3的回答(這是偉大的,順便說一句)給你其他解釋下的答案:

>>> '996 351 980 221'.split()[-1] 
'221' 

取決於你想要什麼。

只是不要使用正則表達式。 :)

0

正則表達式的解決方案:

import re 
re.findall('\d+', x)[-1] 

re.findall總是返回一個列表,這樣就可以避免你IndexError不使用異常捕獲器。

相關問題