2011-09-26 4 views
3

내가 파이썬 스크립트에서 다음 문자열로 변환하고자 튜플로 변환하는 방법 :문자열

: 튜플

mytuple=[(5,650),(235,650),(465,650),(695,650)] 

등이 print mytuple[0] 수익률의 목록에

mystring='(5,650),(235,650),(465,650),(695,650)' 

(5,650) 

답변

1

그건 튜플이 아니에요. you shown 've대로 동일하게되는 format에 따라 달라질 수 있습니다 If

, 당신은 probably 목록에 변환 할 이런 일을하는 사람들과 away get 수 :

mystring2 = mystring.translate(None, "()") 
numbers = mystring2.split(",") 
out = [] 
for i in xrange(len(numbers)/2) 
    out.append((int(numbers[2 * i), int(2 * i + 1]))) 

This는 probably some을 using improved 할 수 있습니다 더 나은 목록 걷기 메커니즘. 그래도 꽤 명확해야합니다.

은 정말 튜플의 튜플을 원하는 경우에, 당신은 최종 목록으로 변환 할 수 있습니다 :

out2 = tuple(out) 
+0

잘못되었습니다. 목록 안에있는 텍스트 만 가져옵니다. – JBernardo

13

내가 사용하는 것 ast.literal_eval :

In [7]: ast.literal_eval('(5,650),(235,650),(465,650),(695,650)') 
Out[7]: ((5, 650), (235, 650), (465, 650), (695, 650)) 

위에서 볼 수 있듯이을이의 튜플을 반환 튜플. 튜플 목록을 원하면 list()을 결과에 적용하면됩니다. 당신이 목록 묶으이 brackes와 mystring에 원하는 경우

1

사용 eval

mytuple = eval(mystring) 

'간단한'솔루션을 (파이썬 2.5 가져 오는 것도, 일을) 없습니다
mytuble=eval("[%s]" % mystring) 

는 그러나 ast.literate_eval는 더 많은 것 적절한 방어 컨텍스트.

+0

문자열이 안전한 출처에서 제공된다면 이것은 내가 가장 좋아할 것입니다. 그렇지 않으면, 어쩌면 정규식 기반의 솔루션은 괜찮을 것이다. – glglgl

+0

** 사회자의 메모 : ** _ 귀사가 eval을 사용할 때의 위험성에 관해 논의하고 싶다면 채팅을하십시오. 이 답변의 주석은 잡음으로 저하 되었기 때문에 제거되었습니다. 단지 몇 개를 삭제하면 대화가 끊어졌습니다. 언제든지 채팅으로 이동하고 해결 방법을 찾은 다음 여기에서 성적표에 연결할 수 있습니다 ._ –