• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

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

20.07.14 16:32 작성 조회수 91

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

질문자

2020.07.15

감사합니다.