DB에 저장할 데이터가 리스트 자료형인데, DB에 저장할때는 문자열로 저장할수 밖에 없다.
그래서 문득 떠오른 고민이, 문자열을 리스트자료형으로 어떻게 변환 하지 라는 생각이 떠올랐다. 당연히 구글에 검색을 하였지만, 문자열을 리스트로 만드는 방법들만 찾을 수 있었다. 대충 아래와 같다
test = 'abcd'
test_list = list(test)
# 실행 결과 >> ['a', 'b', 'c', 'd']
위와같은 방식의 답변만이 구글에 있을뿐이 었다. 내가 원한 것은 위와 같은 형식이 아니라, 아래와 같은 리스트 모양의 문자열이 있을때, 파이썬에서 사용가능한 리스트 자료형으로 바꾸는 건데, 원하는 검색결과가 나오지 않은것
예를 들어서 “[‘가’, ‘나’, ‘다’]” 문자열을 , 파이썬에서 [‘가’, ‘나’, ‘다’] 로 바꾸는걸 원했다
"['가', '나', '다']"
# 현재 문자열 자료형, 파이썬에서 리스트 자료형 처럼 사용 불가능
['가', '나', '다']
# 이런식으로 완벽한 파이썬 리스트 자료형으로 변환 되길 원함
책도 찾아보고, 이것저것 서칭해 본결과
eval() 메소드로 파이썬 리스트 형식으로 변환이 가능했다
eval() 메소드의 치명적인 단점
아쉽게도 eval() 함수는, 문자열을 파이썬 리스트 자료형으로 변환하면서, 실행되어 결과값을 반환하고 한다, 이는 보안상 안전하지 않은 코드다
해결 방법 ast.literal_eval() 함수로 안전하게 변환 가능
최종 실행 결과는 리스트가 반환되지만, 문자열을 리스트로 변환 하는 과정에서, 문자열을 실행 되지 않기 때문에 안전하게, 리스트형으로 생긴 문자열을 리스트 자료형으로 변환이 가능하다.