2010-01-04 252 views
0

如果我有一個字符串'x=10',我怎樣才能提取10作爲一個整數使用一行代碼?Python字符串拆分

+0

我給你一個提示:split,int,len,assert – 2010-01-04 15:32:46

+2

「一行」並不重要,但我理解你的意思是簡單明瞭的代碼。 – 2010-01-04 15:41:06

+1

沒有不作功,只是想學python – mikip 2010-01-05 09:01:45

回答

0

檢查這一項:

answer = int("x=10".partition("=")[2]) 
7
>>> s = "x=10" 
>>> int(s.split('=')[-1]) 
10 
3
s = 'x=10' 
i = int(s[2:]) 
4

肯定的:

a = "x=10" 
b = int(a.split('=')[1]) 
3
result = int(my_string.rpartition("=")[-1]) 

但是請注意,如果有別的後=簽名功能打破。

所以x=10,x=560x=1010001003010都將工作。但是,y=1,341將會破壞ValueError。

ValueError: invalid literal for int() with base 10: '1,341'

編輯: 事實上,pitrou的使用split,甚至更好,因爲你可能不能保證會有要麼只有一個=標誌。

而且還修復了partitionrpartition問題。

+1

爲了說明'x = y = 500'之類的可能性,我會使用'rpartition'而不是'partition'。 – jcdyer 2010-01-04 15:52:35

+2

** OP沒有這樣的問題**。隨着你的態度,我們將得到解析隨機二進制斑點,因爲這些*數字*不能保證在字符串結尾,不保證是數字,不保證是ASCII字符串。 – SilentGhost 2010-01-04 16:31:11

+1

@SilentGhost - 絕對正確。我並沒有試圖建議他的代碼**應該足夠強大,以處理'1,341',只是指出它不會。謹慎的提示,而不是建議需要更「強大」的解決方案。 – 2010-01-04 17:12:23