2017-01-31 23 views
1

我需要在一個字符串中提取兩個數字。他們可以是這樣的:從字符串中獲取兩個數字

(0,0) 
(122,158) 
(1,22) 
(883,8) 
etc... 

所以我想要得到的逗號之前的第一個數字和逗號後面的數字,並將其存儲在變量。我能得到的第一個數字是這樣的:

myString.split(',')[0][1:]) 

但是,我想不出如何讓下一個號碼。


感謝您的幫助大家!

+0

使用正則表達式https://docs.python.org/2/library/re.html –

+0

在您的發佈代碼中,[[0]指的是第一個數字。所以只要'[1]'獲得第二個數字。 – spicypumpkin

+0

這也打印括號​​。我只是想要數字。 –

回答

2

它應該這樣工作就像

myVar.split(',')[0][1:] # = 122 for the string in the second line 
myVar.split(',')[1][:-1] # = 158 for the string in the second line 

這應該是做的最簡單的方法這個

+0

@Posh_Pumpkin我一發現就意識到這一點,我的手指比我的大腦快:-) –

2

你可以擺脫括號,分割字符串,並將其轉換每個項目的INT:

a, b = [int(x) for x in s[1:-1].split(',')] 

當然,如果你絕對的把握大約T t他字符串的格式,並且不關心安全性,你可以只eval字符串:

a, b = eval(s) 
1

多任務,stripping括號和分裂會做:

a, b = myString.lstrip('(').rstrip(')').split(',') 
# a, b = map(int, (a, b)) 
1
myVar.split(',')[1][:-1]) 

會得到你第二個數字

2

您可以使用ast.literal_eval()將您的字符串轉換爲元組。這也會照顧到額外的空白,如'(123, 158)'

>>> from ast import literal_eval 
>>> tup = literal_eval('(122,158)') 
>>> tup[0] 
122 
>>> tup[1] 
158 

或者只是:

>>> first, second = literal_eval('(122,158)') 
1

簡單一個班輪將

a, b = (myString[1:-1].split(',')[0], myString[1:-1].split(',')[1]) 

擺脫了括號,然後分裂的逗號。