포스트

파이썬에서 문자열로 표현된 딕셔너리를 실제 딕셔너리로 변환하기

문제 상황

개발을 하다 보면, 문자열로 표현된 딕셔너리를 실제 파이썬 딕셔너리로 변환해야 할 때가 있습니다. 이러한 경우에 어떻게 처리해야 하는지에 대해 알아봅시다.

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() 함수를 사용하면 됩니다. 이 두 함수는 각각의 조건과 환경에 따라 적절히 사용할 수 있으므로, 상황에 따라 선택하면 됩니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.