We.TIL 27 : literal_eval 문자열을 바꾸는 가장 단순하고 강력한 방법

김기욱·2020년 8월 25일
1

We.TIL

목록 보기
45/69

ast

literal_eval 기능을 사용하기 위해선 ast 모듈을 알고 있어야 한다. ast는 Abstract Syntax Trees의 약자로 문법을 구조화 시켜주는 모듈이다.

크롤링 / DB upload

웹 크롤링을 해서 CSV파일로 저장하게 되면 CSV상에선 분명히 리스트나 딕셔너리로 보였는데 type을 찍어보면 문자열로 변해있는 경우가 종종 발생한다.

또한 리스트로 잘 크롤링해왔더라도 저장되는 테이블과 연관된 Django의 model table이 charfield인 경우 무조건 문자열로 저장되서 나중에 post나 get을 이용한 views를 작성할 때 문제가 되는 경우가 발생한다.

literal_eval

이럴때 손쉽게 쓸 수 있는게 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'}

똑같이 써주면 된다.

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

1개의 댓글

comment-user-thumbnail
2020년 8월 30일

헐 엄청 좋은 정보 잘 보고 갑니다 기욱님

답글 달기