python을 활용하여 .csv 파일을 읽는 경우가 상당히 많이 있습니다.
csv
csv는 쉽게 생각하면 엑셀 및 스프레드시트와 같은 프로그램에서 필수 데이터만 나열한 것이라고 생각하시면 될 것 같습니다. 자세한 사항은 여기에서 확인해보세요~
python에서 읽을때 [ 0, 0 ]째 값에 \ufeff가 붙어있는것을 누구는 보이고 누구에게는 안 보이는 상황이 발생하는데요
csv.read().decode('utf-8')
['\ufeffmain text','next text']
이러한 경우는 윈도우 시스템에 의해 작성된 문서일 경우 작성이 되는 경우가 대부분입니다.
(윈도우 유저의 경우 흔하게 볼 수 있습니다.)
이유는 바로 Byte Order Mark(BOM)
byte order mark에 대한 내용은 해당 블로그에 자세히 기술되어 공유드립니다~
wystan's tales > UTF-8 인코딩에서의 BOM(Byte Order Mark) 문제
다양한 언어를 표현할 수 있도록 해주는 유니코드(Unicode) 인코딩에는 여러가지 방식이 있습니다. 최근 웹 환경에서 많이 쓰이는 UTF-8을 비롯해서 UTF-16, UTF-32 등이 이런 인코딩 방식을 나타내지요. 이렇게 비슷한 방식을 사용하는 문서는 Byte Order Mark(BOM)로 구별이 됩니다. 문서 맨 앞에 눈에 보이지 않는 특정 바이트(byte)를 넣은 다음 이것을 해석해서 정확히 어떤 인코딩 방식이 사용되었는지 알아내는 방법이지요. 그
blog.wystan.net
해결 방법은 아주 간단합니다~
#csv.read().decode('utf-8')
csv.read().decode('utf-8-sig')
['main text','next text']
.decode()에 "utf-8-sig"를 적용하시면 해결하실 수 있습니다~
sig는 signature의 약자이며 +"-sig" 가 붙으면서 "\ufeff"는 문자열이 아닌 인코딩 정보로 인식하게 되어 해당 문자는 표시되지 않게됩니다.
의외로 간단하죠~?
'Pyhton' 카테고리의 다른 글
assertIn VS assertContains 무엇이 다른가요? (0) | 2022.01.27 |
---|---|
asyncio, aiohttp 체험기 (0) | 2021.07.16 |
윈도우에서 가상 환경 만들기~! (0) | 2020.05.30 |
파이써닉은 뭔가요? _ Pythonic (0) | 2020.04.24 |
왜 Python을 쓰는거죠? 2020 프로그래밍 순위 (0) | 2020.04.01 |
댓글