2012-11-05 4 views
1

목록으로 저장하려는 긴 문자열이 있습니다. 그러나 처음과 끝 부분에는 항상 작은 따옴표가 있습니다. 그들을 제거하는 방법? 감사.Python은 긴 문자열을 작은 따옴표없이 목록으로 변환합니다.

샘플

>>> string 
>>> '"2012-11-05", "filename", 1, 2, 3, 4, 5, 6, 7, 0.11, 0.22, 0.33' 
>>> string.split("'") 
>>> ['"2012-11-05", "filename", 1, 2, 3, 4, 5, 6, 7, 0.11, 0.22, 0.33'] 

상담자는 작은 따옴표없이 다음과 같은 결과를 얻을 수있는 방법인가?

>>> ["2012-11-05", "filename", 1, 2, 3, 4, 5, 6, 7, 0.11, 0.22, 0.33] 

답변

8

귀하의 데이터가 유효한 파이썬 튜플 것 같다. literal_eval가 임의의 코드, 그냥 일반 값을 평가하지 않기 때문에

import ast 

list(ast.literal_eval('"2012-11-05", "filename", 1, 2, 3, 4, 5, 6, 7, 0.11, 0.22, 0.33')) 

대서양 표준시 모듈에서 literal_eval 기능은 일반 평가보다 더 안전합니다.

+1

신난다, 나는이 모듈이 지금 존재한다는 것을 알고 기쁘다. 고맙습니다. – Aesthete

+0

고맙습니다. 우수한! 그게 내가 원하는거야! – William

3

이 시도 :

[s.replace('"', '').strip() for s in string.split(',')] 

>>> ['2012-11-05', 'filename', '1', '2', '3', '4', '5', '6', '7', '0.11', '0.22', '0.33'] 
+0

이것은 주어진 결과와 일치하지 않습니다. 숫자가 문자열이 아닌 ints/floats로 저장되기를 원합니다. – Tim

+0

그래, 문자열을 ints/floats로 문자열로 저장하고 싶습니다. – William

-1
 python 3.2 

     string='"2012-11-05", "filename", 1, 2, 3, 4, 5, 6, 7, 0.11, 0.22, 0.33' 
     a=eval(string) 
     res=list(a) 
+0

게시 된 코드에 항상 설명을해야합니다 ... – brimborium

+0

-1 : eval()은 임의의 파이썬 코드를 실행할 수 있으므로 신뢰할 수없는 데이터의 경우 위험합니다. –

관련 문제