인프런 커뮤니티 질문&답변

ds.wook님의 프로필 이미지
ds.wook

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

9장 콘텐츠 기반 필터링 실습에 관련해서 질문 올립니다.

작성

·

166

0

안녕하세요 실습하다 궁금한게 생겨서 질문 남깁니다.

from ast import literal_eval을 사용하셔서

movies_df의 "genres" 컬럼값을 문자열에서 리스트 형태로 변환하셨던데

저는 eval함수로 구현해서 되더라구요 eval함수와 literal_eval의 차이점이 무엇이기에 강사님은 literal_eval을 사용하셨나요? 

아래는 제 코드입니다.

movies_df["genres"] = movies_df["genres"].apply(lambda x : eval(x))
movies_df["genres"] = movies_df["genres"].apply(lambda x : [dic["name"for dic in x])

항상 좋은 강의 감사합니다.

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

아, 이게 eval()에서도 되는군요.

literal_eval은 ast 패키지에서 제공하는 함수입니다. 말 그대로 문자열을 evaluation에서 적절한 객체로 바꾸어 줍니다.

예를 들어 listral_string = "{ 'key_a': 10 }" 이라고 했다면 listeral_string 변수는 dictionary가 아니라 string 값입니다. 이 문자열을 parsing해서 적절한 객체(여기서는 dictionary)로 해석/변환하는 역할을 하는 것이 literal_eval 입니다.

감사합니다.

0

ds.wook님의 프로필 이미지
ds.wook
질문자

감사합니다.

ds.wook님의 프로필 이미지
ds.wook

작성한 질문수

질문하기