2015-08-08 61 views
-4

所以我有字符串:分配部分

[53,2] 

而且我想單獨它使:

x = 52 
y = 2 
+5

你有'[53,2]',還是你有''[53,2]「'? '[53,2]'是一個列表,'「[53,2]」'是一個字符串。 – Cyphase

+4

你是否已經通過[Tutorial](https://docs.python.org/2/tutorial/index.html)? – wwii

+0

將'[53,2]'分成兩個元素,53和2,不會產生52和2.您可能需要一些數學算法,或者這個問題可能在語句中有錯誤。我不能說。 – Paul

回答

1

你叫它一個字符串,但語法說它是一個列表;所以我會回答兩個:)。

如果它是一個字符串,您可以通過使其成爲一個列表:

data = "[53, 2]" 
data_stripped = data.strip('[]') # remove '[' and ']'s from the ends 
data_split = data.split(',') # split into a list containing each entry 
data_final = [int(x) for x in data_split] # convert strings to ints 

此時data_final包含列表[53, 2]。如果您的初始值的列表已經,您可以跳過上面的代碼,並將其直接運行下面的代碼之前分配給data_final

x, y = data_final 

這就是它! :)

編輯:

另一種方式來解析字符串是使用json.loads:然後

import json 

data_str = '[53, 2]' 

data = json.loads(data_str) 

data將列表[53, 2]。然後你就可以得到xy上述同樣的方式:

x, y = data 

感謝Freenode上的#python IRC頻道_habnabit指出這一點。 :)

2

輕鬆!

X, y = [53, 2] 

Python不是很有趣嗎?

如果你的對象實際上是一個字符串,而不是一個列表,你可以放心地將其轉換爲一個列表:

import ast 
x, y = ast.literal_eval("[53, 2]") 
+0

對於那些想知道的人來說,'ast.literal_eval()'即使在不受信任的輸入上也是安全的,而不是'eval()'。不要使用'eval'! – Cyphase

0

假設你有一個字符串,而不是一個數組/列出你需要replacesplit方法。

mystring="[53,2]" 

x=str.split(mystring,",")[0].replace("[","") 
y=str.split(mystring,",")[1].replace("]","") 
0

或者:

a=[53,2] 

x=a[0] 
y=a[1] 

print(x,y) 
53 2 

編輯:對不起,誤解你的問題。這些數字是字符串值。