[파이썬] 파일 읽기, strip
이번 주말엔 오랜만에 친구들을 만나서 놀았다. 즐거운 주말을 보냈으니 이번 주는 다시 열공을 해야한다..!
오늘 공부할 내용은 파이썬에서 파일 읽기~
1. open
먼저 읽어올 파일을 준비해야 하는데 강의에서 따로 제공을 안해줘서 간단하게 메모장으로 타이핑해줬다.
치킨집 하루 매출이라고 가정하고.. 이 파일을 파이썬으로 불러와준다.
이때 코드를 작성할 파이썬 파일과 같은 폴더에 있으면 파일 이름만 적어도 되지만 다른 폴더에 있다면 경로까지 함께 적어준다.
with open(파일 경로, 'r') as f:
요렇게 적어주면 되는데 이때 'r'은 read의 약자로 파일을 읽어준단 뜻이다. 파일을 생성할 땐 반대로 'w' (write) 라고 적어주면 됨!
그런데 내 컴퓨터에서는 이 코드대로 적으면 UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 1: illegal multibyte sequence 요런 에러가 뜬다. (찾아보니까 텍스트파일을 저장할 때는 영어는 차이가 없지만 한글은 인코딩 방식에 따라서 파일이 달라진다고 한다. 아스키코드로 저장하는 cp949와 유니코드 인코딩인 UTF-8가 있는데 내가 메모장으로 파일을 생성할 때 UTF-8로 인코딩 했기 때문에 인코딩방식이 달라서 오류가 생긴듯 하다.) 암튼 'r' 대신 'rt', encoding='UTF8'를 적어주면 된다. 참고 (텍스트 파일 인코딩)
as f: 는 이렇게 읽어온 파일을 f에 저장해준다는 뜻이다. 이때 텍스트파일이 저장된 f는 <class '_io.TextIOWrapper'>라는 타입의 변수가 되는데 정확히는 모르겠지만 리스트처럼 사용할 수 있다고 한다. for문을 이용해서 문서의 한 줄씩 line에 저장해 한 줄씩 출력할 수 있다.
2. strip
그런데 출력된 결과물을 보면 줄 사이에 엔터가 들어간 것을 알 수 있다. 이건 메모장으로 파일을 작성할 때 줄 끝에 엔터(\n)가 들어갔기 때문인데 파이썬은 기본적으로 print마다 엔터를 하기 때문에 엔터가 두 번 들어가게 돼서 줄마다 공백이 생긴 것.
이를 해결하려면 strip을 써주면 된다. strip은 문자열 앞과 뒤에 있는 화이트 스페이스(" ", "\t", "\n")를 없애주는 명령어이다.
요렇게 문자열 뒤에 .strip()을 붙여주면 문자열 뒤에 있던 \n을 제거해준다.
그럼 이렇게 줄 사이에 엔터가 사라진 것을 확인할 수 있다!!