[코모도] 너는 왜 str 타입이니? (Python)

hun_dev·2023년 5월 18일
0
post-thumbnail

코모도 - 코딩의 모든 것을 도와줘요

문제 상황

Pandas를 이용해 csv 파일을 읽고 데이터프레임 내의 리스트 형태로 된 데이터를 다루어야 하는 상황을 마주하게 되었습니다. 평소와 같이 리스트를 다루듯 인덱스로 데이터에 접근했는데, 예상과는 다르게 쌍따옴표만 반환되었습니다.

혹시나해서 type check를 해보았더니 데이터의 타입은 str이었습니다. 제가 다루고자 한 데이터의 형태는 다음과 같았습니다. data의 0번 인덱스로 접근하면 element1을 반환해줄 것만 같은데 자꾸만 쌍따옴표만 반환해주는 컴퓨터가 야속하기만 했습니다.

>> data = "['element1', 'element2', 'element']"
>> type(data)

<class 'str'>

양 끝의 쌍따옴표와 대괄호를 제거하는 전처리를 모든 데이터에 적용해야 하나 싶어 눈 앞이 캄캄해졌습니다. 머리를 좀 아파하다가 구글 신이 저를 도와줄 수 있지 않을까 싶어 구글링을 단행한 결과, 저와 같은 문제를 겪는 분들이 많았고 해결 방법 또한 다수 제시되어 있었습니다.

해결 방법

파이썬의 내장 모듈 중 AST 모듈의 literal_eval 함수를 이용하면 str 타입의 리스트, 튜플, 딕셔너리와 같은 객체를 기존 타입의 객체로 변환할 수 있다는 것을 알 수 있었습니다.

라이브러리 소개

AST

AST(Abstract Syntax Trees) 라이브러리는 파이썬의 내장 모듈 중 하나로, 파이썬 코드의 추상 구문 트리(Abstract Syntax Tree)를 생성하고 조작하는 기능을 제공합니다. 파이썬 코드를 파싱하고, 추상 구문 트리로 변환하여 코드 분석, 변환, 검증 등 다양한 작업을 수행할 수 있도록 도와주는 모듈입니다.

자세한 사항은 공식 문서를 참고하세요!

적용 코드

>> import ast

>> data = "['element1', 'element2', 'element']"
>> original_data = ast.literal_eval(data)
>> type(original_data)

<class 'list'>

리스트 뿐만 아니라, 딕셔너리, 튜플 모두 형 변환이 쉽게 가능합니다. 이제는 더이상 데이터프레임을 다루면서 머리가 아프지 않을 것 같아 참으로 행복합니다.

피드백은 항상 감사히 받습니다. 게시글에 수정해야 할 내용이 있다면 댓글로 알려주세요!

profile
좋아하는 것이 잘하는 것이 될 때까지

0개의 댓글