2009-10-18 4 views
2

dict ex의 형태로 문자열 출력이 있습니다.dict에 구문 분석 문자열

{'key1':'value1','key2':'value2'} 

어떻게 간단하게 문자열로 저장할 수 있나요?

+0

어디에 저장 하시겠습니까? – SilentGhost

+0

무엇? 왜 처음에는 문자열을 만드는 대신에 dict을 dict로 저장하지 않습니까? 이것에 대한 좀 더 자세한 내용을 제공해주십시오. 이 질문은 거의 의미가 없으며 훨씬 더 크고 더 깊은 문제가이 문제로 이어질 수 있음을 나타냅니다. –

+3

데이브 (Dave)에 의해 지적 된 바와 같이, http://stackoverflow.com/questions/988228/converting-a-string-to-dictionary는 이것의 정확한 복제본입니다 – dbr

답변

3

astr은 "dict"형식의 문자열입니다. ast.literal_eval은 python dict 객체로 변환합니다.

In [110]: import ast 

In [111]: astr="{'key1':'value1','key2':'value2'}" 

In [113]: ast.literal_eval(astr) 
Out[113]: {'key1': 'value1', 'key2': 'value2'} 
+6

'estval'에'os.remove ("foo")'를 포함 할 수있는 방법이 있다면'eval'을 사용하는 것이 좋습니다. –

1

사용 json.loads은 - 그것이 평가의 보안 구멍의 대상이 아니다 당신이, 파이썬 2.6+에 있다면이 최고입니다

+1

실제로, json.loads – hasen

3

빠를 수 있습니다.

import ast 

s = """{'key1':'value1','key2':'value2'}""" 
d = ast.literal_eval(s) 
+0

따옴표가 엉망입니다. 바깥 쪽 따옴표를 사용하십시오. –

1

어디에서이 문자열을 가져 왔습니까? JSON 형식입니까? 또는 파이썬 사전 형식? 아니면 파이썬 사전과 비슷한 임시 형식일까요?

JSON이거나 단지 dict이고 문자열 및/또는 숫자 만있는 경우 json.loads을 사용할 수 있습니다. 단순히 파이썬 코드를 구문 분석 할 수 없기 때문에 가장 안전한 옵션입니다. 예를 들어, 문자열은 작은 따옴표 대신 큰 따옴표 "'로 묶여있는 경우

이러한 접근 방식은,하지만 몇 가지 단점을 가지고 있지 그것은 단지에만 우연히 비슷한 공유하는 일이 JSON 객체/배열을, 구문 분석하는 언급 비단뱀 딕트/배열 구문.

당신이 얻는 문자열은 JSON 형식으로 의도 된 것 같습니다. 데이터 교환을위한 일반적인 형식이기 때문에 나는이 가정을합니다.