2013-04-06 4 views
0

"{{39.830000, -98.580000}, {20.265710, 64.589962}}" 나는 triyng입니다. 모든 숫자를 가져 와서 변수에 넣으려고하지만 작동하지 않는 것 같습니다.개체에 넣어야하는 문자열이 있지만 작동하지 않습니다.

나는

t = mystring.split("}, {"); 
t[0].split(","); #etc... 

과 다른 것들의 무리를 할 triyng했다 ...하지만 비는 일 것 같다. 단지 variabes, A, B, C 및 D

+0

할 수 원하는 경우

. 자세한 정보는 문서를 확인하십시오. http://docs.python.org/2/library/functions.html#setattr –

답변

6

에 4 개 수레를 배치하려고

임 이건 어때 :

>>> import ast 
>>> s = "{{39.830000, -98.580000}, {20.265710, 64.589962}}" 
>>> s = s.replace("{", "[").replace("}", "]") 
>>> l = ast.literal_eval(s) 
>>> l 
[[39.83, -98.58], [20.26571, 64.589962]] 
이제

당신은에 float의 모든 당신의 가치있어 멋지고 색인 가능한 list. 당신이, 당신이 다음 범위-조작을 필요로하고는 대부분 나쁜/위험 연습으로 간주

>>> (a, b), (c, d) = l # Thanks Lev! 
>>> a 
39.83 
>>> # etc. 
+2

'eval()'은 매우 위험한 것으로 간주되므로 더 나은 방법이 있어야합니다. 그럼에도 불구하고, 정답 : –

+3

@Allendar : 네, 그 이유는'eval()'을 사용하지 않기 때문입니다. 'ast.literal_eval()'*은 * 안전합니다. –

+1

@OP : 네임드 변수를 정말로 원한다면,'(a, b), (c, d) = l'처럼 간단하다는 것을 알아 두십시오. –

관련 문제