[python] 파이썬 dict를 문자열로 변환하고 다시 변환하십시오.

사전 객체에 데이터를 저장하는 프로그램을 작성하고 있지만이 데이터는 프로그램 실행 중 어느 시점에 저장되어 프로그램이 다시 실행될 때 사전 객체로 다시로드되어야합니다. 사전 객체를 파일에 쓰고 사전 객체로 다시로드 할 수있는 문자열로 어떻게 변환합니까? 이것은 사전을 포함하는 사전을 희망적으로 지원할 것입니다.



답변

json 모듈 은 여기서 좋은 솔루션입니다. 일반 텍스트 출력 만 생성하고 크로스 플랫폼 및 크로스 버전이라는 피클보다 장점이 있습니다.

import json
json.dumps(dict)


답변

사전이 너무 크지 않으면 str + eval이 작업을 수행 할 수 있습니다.

dict1 = {'one':1, 'two':2, 'three': {'three.1': 3.1, 'three.2': 3.2 }}
str1 = str(dict1)

dict2 = eval(str1)

print dict1==dict2

소스를 신뢰할 수없는 경우 추가 보안을 위해 eval 대신 ast.literal_eval 을 사용할 수 있습니다 .


답변

나는 사용한다 json:

import json

# convert to string
input = json.dumps({'id': id })

# load to dict
my_dict = json.loads(input) 


답변

pickle모듈을 사용하여 디스크에 저장하고 나중에로드하십시오.


답변

왜 파이썬 3의 붙박이 사용하지 AST의 라이브러리의 기능 literal_eval을 . eval 대신 literal_eval 을 사용하는 것이 좋습니다

import ast
str_of_dict = "{'key1': 'key1value', 'key2': 'key2value'}"
ast.literal_eval(str_of_dict)

실제 사전으로 출력을 제공합니다

{'key1': 'key1value', 'key2': 'key2value'}

그리고 사전을 문자열 로 변환하도록 요청하는 경우 str () 사용은 어떻습니까? Python의 메소드를 .

사전이 다음과 같다고 가정하십시오.

my_dict = {'key1': 'key1value', 'key2': 'key2value'}

그리고 이것은 다음과 같이 수행됩니다 :

str(my_dict)

인쇄합니다 :

"{'key1': 'key1value', 'key2': 'key2value'}"

이것은 당신이 원하는대로 쉽습니다.


답변

Chinses에있는 경우

import codecs
fout = codecs.open("xxx.json", "w", "utf-8")
dict_to_json = json.dumps({'text':"中文"},ensure_ascii=False,indent=2)
fout.write(dict_to_json + '\n')


답변

사전을 JSON으로 변환 (문자열)

import json

mydict = { "name" : "Don",
          "surname" : "Mandol",
          "age" : 43}

result = json.dumps(mydict)

print(result[0:20])

당신을 얻을 것입니다 :

{ “이름”: “돈”, “sur

문자열을 사전으로 변환

back_to_mydict = json.loads(result)