아이공의 AI 공부 도전기

Python .name 확장자 읽기 

encoding='cp949'-> 'UTF8'


AI 특히 Machine Learning을 연습하는 사람들에게 Dataset을 찾고자 할 때 들어가는 사이트들은 다양하나 대표적으로 UCI Machine Learning Repository 혹은 Kaggle을 찾습니다.


오늘 제가 이야기하고자 하는 ~.name 확장자는 UCI Machine Learning Repository의 한 Dataset을 사용하고자 할 때 마주하는 대표적인 예시일 것입니다. 대표적으로 첫 데이터 세트에 대해서 한 번 살펴봅시다.


보이시는 것과 같이 모든 Dataset에 대해 .data와 .names를 살펴볼 수 있는데요. .data는 pd.read_csv로 읽어올 수 있는 반면 .names는 불가능합니다.


pandas의 read_csv 파일을 읽어오는데 익숙한 사람들에게 .name 확장자는 당혹스러움을 느끼게 하는 문제일 것으로 예상되는 바 어떻게 읽어야 할까요


저는 그 답을 Python 내장함수이자 입출력 함수인 open에서 답을 찾았습니다.


물론 어떤 곳은 sys를 활용하기도 하고 또 다른 패키지 함수를 활용하는 곳 또한 발견했습니다만 저는 이 방법이 가장 좋은 것 같습니다.


하는 법은 매우 간단합니다.


Python 파일 입출력 관련 : https://wikidocs.net/14593


실험 삼아 open만 사용해서 결과를 뽑아보면 아래 그림과 같습니다.

참고로 대부분 encoding이 cp949로 되어있는데 만약 encoding를 바꾸고 싶다면 open parameter를 활용하여 바꿀 수 있습니다.



보이는 것과 같이 개행문자를 포함한 list들로 구성됨을 알 수 있습니다.


조금 더 세련되게 바꾸기 위해서 아래와 같이 최종 수정을 하면 마무리!



물론 마무리를 한 이후 close를 사용해야하는데 내장함수가 바뀌었는지 strlist.close()를 써보니 그런 함수가 없다고 뜨는 상황이었습니다.


뭐... 굳이 하고싶다면 strlist.clear()를 통해 list를 비워낼 수 있지만 굳이.... 그렇게까지 할 필요가 있나 싶습니다.


그럼 최종 정리


.name 확장자 혹은 다른 확장자를 열고싶다면 Python 내장함수 open을 사용해보자!


사용법은 open('디렉토리/파일 이름.name', 'r', encoding='UTF8')로 변수를 받은 후 변수.readlines()를 통해 read하고 for 문을 통해 결과값을 얻어낸다!!!


끝!





공유하기

facebook twitter kakaoTalk kakaostory naver band
loading