Programming Language/Python
[펌] python 3.x버전에서 UTF-8 파일 읽기
푸른너구리
2016. 2. 7. 03:43
python3 부터는 ANSI 기준으로 작성된 파일만 읽기 가능
UTF-8로 된 파일 읽을 시 아래와 같은 에러 발생
UnicodeDecodeError: 'cp949' codec can't decode bytes in position
이런 경우 파일의 인코딩 형식을 변환 해야 한다.
첫번째 방법, 리눅스에서 변경하기
블로그에 iconv 에 대한 설명이 있습니다. (http://amornatura.tistory.com/42)
그냥 UTF-8에서 cp949(ANSI)로 파일을 변환하면 되기 때문에 다음과 같이 입력해줍니다.
$iconv -f UTF-8 -t CP949 -o rename.txt original.txt
두번째 방법, 파이썬3 에서 읽어오기
파이썬3 에서 직접 UTF-8 문서를 읽어올 수 있습니다. 자세한 내용은 다음의 링크를 참조.
(http://www.evanjones.ca/python-utf8.html)
위의 사이트에서 설명해주는 내용을 따라하면,
import codecs
fileObj = codecs.open( "read.txt", "r", "utf-8" )
u = fileObj.readlines()
for i in u :
print(i)
print("\n")
codecs 라는 라이브러리를 불러와서 파일의 형식을 지정해준 후 읽어옵니다.
읽을 때 read()로 하면 한글자씩, readlines()하면 단위줄로 읽어오죠.