2015-08-08 63 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 

编辑:对不起,误解你的问题。这些数字是字符串值。