2012-09-10 5 views
0

에서 분리기 스트링을 분할내가 형식 문자열을 파이썬

s = "a, b, [c, d, ....]" 

I는 다른 요소와 같은 하나 개의 원소 A 및 B에

[c, d,, ..] 

된 배열로 분할하는 방법 결과 어레이의 내가 사용하려고하면 [c, d, ...]가 나눠진다.

s.split(',') 

조차도 나뉩니다.

답변

2

ast.literal_eval 길을 가야하는 것 ... 인이있는 pyparsing 도서관에서 찾거나 " http://pyparsing.wikispaces.com/Examples에 안전 "평가 예를

literal_eval 솔루션 (parsePythonValue.py 확인) : 두 시스템간에 데이터를 교환하기 위해 필요한 경우, JSON을 사용할 수 있습니다

from ast import literal_eval 

s = "'a', 'b', ['c', 'd', 'z']" 
print literal_eval(s) 
1

eval() 할 수 있습니다.

>>> s = "'a', 'b', ['c', 'd', 'e', 'f']" 
>>> a = eval(s) 
>>> a 
('a', 'b', ['c', 'd', 'e', 'f']) 

또는 일련의 수정 작업을 수행 할 수 있습니다.

>>> s = "a, b, [c, d, e, f]" 
>>> a = s.replace("[","").replace("]","").replace(" ","").split(",") 
>>> a 
['a', 'b', 'c', 'd', 'e', 'f'] 
0

당신이 문자열 조작 방식을 복용 할 계획이라면 :

http://docs.python.org/library/re.html

import re 

text = "a, b, [c, d, ....]" 
matches = re.split(r"\W+", text); 
print matches 

그렇지 않으면 내가 직접 평가 방법을 사용하십시오. (- 그렇지 않으면 아마주의 eval를 사용하는 당신이 리터럴이 가정) - 당신이 2.6+에 경우

1

:

>>> import json 
>>> s = '[1, 2, [3, 4]]' 
>>> json.loads(s) 
[1, 2, [3, 4]] 

리터럴이 필요한 경우에는 리터럴을 인용해야합니다.

+0

영리한 나는이 것을 좋아한다. –