사전 객체를 문자열로 바꾸거나 그 문자열을 사전 데이터로 변환하는 다섯 가지 예제
글. 수알치 오상문
보너스로 피클을 이용하여 파일에 저장했다가 읽어오는 예제도 추가했습니다.
다음은 예제 코드입니다.
dict_data = {"1":"하나", "2":"둘", "3": {"기수":"셋", "서수":"삼"}, }
print("원래 사전 데이터")
print(type(dict_data), dict_data)
# 방법 1 : str + eval
print("\n방법 1 : str + eval")
str_data = str(dict_data)
print(type(str_data), str_data)
dict_data2 = eval(str_data)
print(type(dict_data2), dict_data2)
# 방법 2-1 : json
import json
print("\n방법 2-1 : json.dumps, json.loads")
str_data = json.dumps(dict_data)
print(type(str_data), str_data)
dict_data2 = json.loads(str_data)
print(type(dict_data2), dict_data2)
# 방법 2-2 : ujson (UltraJSON)
# pip install ujson
import ujson
print("\n방법 2-2 : ujson.dumps, ujson.loads")
str_data = ujson.dumps(dict_data)
print(type(str_data), str_data)
dict_data2 = ujson.loads(str_data)
print(type(dict_data2), dict_data2)
# 방법 3 : str + ast
import ast
print("\n방법 3 : str + ast.literal_eval")
str_data = str(dict_data)
print(type(str_data), str_data)
dict_data2 = ast.literal_eval(str_data)
print(type(dict_data2), dict_data2)
# 방법 4 : pickle
import pickle
print("\n방법 4 : pickle.dump, pickle.load")
str_data = pickle.dumps(dict_data) # bytes 문자열
print(type(str_data), str_data)
dict_data2 = pickle.loads(str_data)
print(type(dict_data2), dict_data2)
# [참고] 피클 파일에 저장하고 읽어오기
# import pickle # 원래 지원하던 피클 모듈
import _pickle as pickle # python 3부터 C로 만들어진 빠른 피클 이용 가능
print("\n참고: pickle or _pickle 파일 저장/읽기")
dict_data = {"1":"하나", "2":"둘", "3": {"기수":"셋", "서수":"삼"}, }
with open('dump.pickle', 'wb') as f:
pickle.dump(dict_data, f) # 피클 파일에 저장
with open('dump.pickle', 'rb') as f:
rev = pickle.load(f) # 피클 파일 읽기
print(type(rev), rev)
[실행 결과] -----------------------------------------------
원래 사전 데이터
<class 'dict'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
방법 1 : str + eval
<class 'str'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
<class 'dict'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
방법 2-1 : json.dumps, json.loads
<class 'str'> {"1": "\ud558\ub098", "2": "\ub458", "3": {"\uae30\uc218": "\uc14b", "\uc11c\uc218": "\uc0bc"}}
<class 'dict'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
방법 2-2 : ujson.dumps, ujson.loads
<class 'str'> {"1":"\ud558\ub098","2":"\ub458","3":{"\uae30\uc218":"\uc14b","\uc11c\uc218":"\uc0bc"}}
<class 'dict'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
방법 3 : str + ast.literal_eval
<class 'str'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
<class 'dict'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
방법 4 : pickle.dump, pickle.load
<class 'bytes'> b'\x80\x04\x95B\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x011\x94\x8c\x06\xed\x95\x98\xeb\x82\x98\x94\x8c\x012\x94\x8c\x03\xeb\x91\x98\x94\x8c\x013\x94}\x94(\x8c\x06\xea\xb8\xb0\xec\x88\x98\x94\x8c\x03\xec\x85\x8b\x94\x8c\x06\xec\x84\x9c\xec\x88\x98\x94\x8c\x03\xec\x82\xbc\x94uu.'
<class 'dict'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
참고: pickle or _pickle 파일 저장/읽기
<class 'dict'> {'1': '하나', '2': '둘', '3': {'기수': '셋', '서수': '삼'}}
'Python 기초' 카테고리의 다른 글
파이썬, 중첩 컴프리헨션 이용하기 (0) | 2023.08.11 |
---|---|
파이썬, 부동소숫점 계산 정확도 보장하기 (0) | 2023.06.26 |
파이썬, 특정 디렉터리를 모두 탐색 예제 (0) | 2023.04.08 |
파이썬, 멀티스레딩, 멀티프로세싱 예제 (백그라운드 실행) (0) | 2023.03.23 |
파이썬, pip install 캐시 무시하고 설치하기 (0) | 2023.03.11 |