파이썬에서 문자열로 표현된 딕셔너리를 실제 딕셔너리로 변환하기
문제 상황
개발을 하다 보면, 문자열로 표현된 딕셔너리를 실제 파이썬 딕셔너리로 변환해야 할 때가 있습니다. 이러한 경우에 어떻게 처리해야 하는지에 대해 알아봅시다.
ast.literal_eval()
함수 사용하기
가장 간단하고 안전한 방법은 파이썬 표준 라이브러리인 ast
모듈의 literal_eval()
함수를 사용하는 것입니다. 이 함수는 안전한 방법으로 문자열을 평가하여 파이썬 객체로 변환해 줍니다.
1
2
3
4
import ast
string_dict = "{'key': 'value', 'age': 25}"
real_dict = ast.literal_eval(string_dict)
이 코드를 실행하면 string_dict
에 저장된 문자열 딕셔너리가 real_dict
라는 실제 딕셔너리 객체로 변환됩니다.
json.loads()
함수 사용하기
json
모듈의 loads()
함수도 사용할 수 있습니다. JSON 형식의 문자열을 파이썬 객체로 변환할 수 있으며, 이를 통해 문자열로 표현된 딕셔너리도 실제 딕셔너리로 바꿀 수 있습니다.
1
2
3
4
import json
string_dict = '{"key": "value", "age": 25}'
real_dict = json.loads(string_dict)
단, json.loads()
는 JSON 형식을 엄격하게 지켜야 하므로, 따옴표 등이 파이썬의 딕셔너리 표현과 정확히 일치하지 않을 경우에는 사용할 수 없습니다.
주의할 점
eval()
함수를 사용할 수도 있지만, 이 방법은 보안상 위험할 수 있으므로 권장하지 않습니다.
오류 상황
이 과정에서 주로 발생할 수 있는 오류는 SyntaxError
입니다. 이 오류는 주로 딕셔너리 문자열의 형식이 올바르지 않을 때 발생합니다. 따라서 문자열의 형식을 정확하게 확인하는 것이 중요합니다.
요약
문자열로 표현된 딕셔너리를 실제 딕셔너리로 변환할 때는 ast.literal_eval()
또는 json.loads()
함수를 사용하면 됩니다. 이 두 함수는 각각의 조건과 환경에 따라 적절히 사용할 수 있으므로, 상황에 따라 선택하면 됩니다.