2016-06-03 2 views
1

저는 (1,2,3,'4.1),(4.2)',5,6,7),(8,9,10)과 같은 문자열을 가지고 있습니다. 내가 얻을 수있는 출력은 목록입니다 : [ ((1,2,3,'4.1),(4.2)',5,6,7), (8,9,10) ] 이 작업을 수행하려면 정규식이 필요하다고 생각합니다. 그렇게하려면 어떻게해야합니까?Python - 문자열에서 괄호 안에있는 튜플 목록을 얻으십시오.

감사합니다.

+0

예, 정규식을 사용하면 도움이 될 수 있습니다. ('(1,2,3, '4.1), (4.2)', (5,6,7), (8,9,10)') 당신이 언급 한 패턴 (숫자, 구조 등)이 바뀔 수 있습니까? – PhilDulac

+0

예, 변경 될 수 있습니다. 실제로 그것은 긴 문자열입니다. 가장 바깥 쪽 괄호 안에있는 각 문자열을 파싱해야합니다. –

+1

@PhilDulac 실제로 중첩 된 괄호 안의 표현식은 정규 표현식이 포착 할 수없는 표준적인 문맥없는 예제입니다 : http://stackoverflow.com/questions/133601/can-regular-expressions-be-used-to-match -nested-patterns – schwobaseggl

답변

2

문자열을 목록에 넣은 후 직접 평가할 수도 있습니다.

from ast import literal_eval 

string = "(1,2,3,'4.1),(4.2)',5,6,7),(8,9,10)" 

literal_eval('[{}]'.format(string)) 
# [(1, 2, 3, '4.1),(4.2)', 5, 6, 7), (8, 9, 10)] 
+0

'literal_eval'은 코드를 실행하지 않기 때문에 악의가 아닙니다. – georg

관련 문제