literal_eval 기능을 사용하기 위해선 ast 모듈을 알고 있어야 한다. ast는 Abstract Syntax Trees의 약자로 문법을 구조화 시켜주는 모듈이다.
웹 크롤링을 해서 CSV파일로 저장하게 되면 CSV상에선 분명히 리스트나 딕셔너리로 보였는데 type을 찍어보면 문자열로 변해있는 경우가 종종 발생한다.
또한 리스트로 잘 크롤링해왔더라도 저장되는 테이블과 연관된 Django의 model table이 charfield인 경우 무조건 문자열로 저장되서 나중에 post나 get을 이용한 views를 작성할 때 문제가 되는 경우가 발생한다.
이럴때 손쉽게 쓸 수 있는게 literal_eval이다.
literal_eval은 문자열을 딕셔너리/리스트 형태로 바꿔줄 수 있다. 사용방법은 다음과 같다.
a = "['호랑이', '사자', '기린']"
a = liter_eval(a)
a = ['호랑이', '사자', '기린']
간단하게 literal_eval을 씌울 경우 이렇게 리스트 형태로 형 변화가 된다. literal_eval은 2차원 리스트 이상 고차원리스트에도 쓸 수 있다.
간혹 Pandas converter와 연계한 literal_eval 기능을 쓸 때 2차원 리스트에는 오류가 나는데, 그런 경우 이렇게 직접 바꿀 변수에 literal_eval을 써주면 문제를 해결 할 수 있다.
딕셔너리 형태로 바꾸고 싶은 경우
b = "{'a' : '3' , 'b' : '4'}"
b = liter_eval(b)
b = {'a' : '3' , 'b' : '4'}
똑같이 써주면 된다.
헐 엄청 좋은 정보 잘 보고 갑니다 기욱님