본문 바로가기

개발/이게 왜 안돼?

[Python / Openpyxl] openpyxl.utils.exceptions.IllegalCharacterError 가 날 눈물짓게 해

파이썬 크롤링을 해서 엑셀에 저장하는 도중 특정 문자열이 포함된 (print 해서 보면 우리눈에는 정상으로 보인다) 경우에는 엑셀파일에 저장하려고 할 경우 에러가 발생한다...

 

에러는 "openpyxl.utils.exceptions.IllegalCharacterError" 이렇게 뜨는데 관련해서 거의 4시간 동안 인터넷 검색했는데도 명확한 해결책이 안나오던 도중 4시간 끝에 겨우 해결했다.

 

시도해본 방법은

pip instasll xlsxwriter,

pip install unidecode,

text.encode('utf-8').strip(),

applymap(lambda x: ILLEGAL_CHARACTERS_RE.sub(r'', x) if isinstance(x, str) else x)

encode("ascii",errors="ignore")

등등...

 

인터넷에 검색해도 python + openpyxl 조합은 검색하면 주로 기본 읽어오기 쓰기만 나오지 상세내용을 다루는 글도 많이 없었다.

검색하면 openpyxl 공식 웹싸이트만 주르륵...

 

해결한 방법은 아래와 같다.

추가 install 할 필요도 없고 아래 모듈 import한 후에

from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE

아래와 같이 하면 된다.

수정할텍스트 = ILLEGAL_CHARACTERS_RE.sub(r'',수정할텍스트)

 

해결책 찾아서 너무 기쁘다.

마지막쯤에는 눈물 날 뻔 했다.