2025-02-11

Python으로 HTML 특수문자 인코딩 및 디코딩하기

스크린샷으로 결론을 이미 정리해 버렸다

이 글은 새 위치로 옮겨지며 이 곳에서는 더이상 유지보수되지 않습니다.

HTML에는 몇몇 문법에 사용되는 문자를 표기하기 위해 독특한 표기 문법을 가지고 있다. 정확히 말해서 그 상위 개념인 XML이나 SGML에서 정의된 것일 것 같긴 하지만 대충 그렇다고 치자. 어쨌거나 HTML에서는 특수한 문자(HTML Entities)를 표시하기 위해 '&'와 ';' 사이에 특수문자 이름을 표시하는 방식을 사용한다.

<tag>

예를 들어 위의 코드를 HTML의 body 내에 넣고 웹브라우저로 파일을 열어보면 '<tag>' 라는 문자가 보이게 된다. 참고로 'lt'는 'less than', 'gt'는 'greater than'이라는 의미의 꺽쇠를 표시한다고 이해하면 된다.

물론 이 글은 HTML 문법을 소개하는 게 아니라 여기까지만 정리하자. 요지는 이 경우 실제 내용과 변환된 내용 사이를 Python을 통해 어떻게 바꾸고 얻는지를 개인적인 용도로 메모하려는 것이다.

Python으로 HTML 특수문자 인코딩 및 디코딩하기

Python에서는 빌트인 모듈인 'html'에서 원하는 기능을 찾을 수 있다. 예를 들어 HTML 특수문자를 눈에 보이는 형태로 바꾸려면 unescape() 함수를 사용할 수 있다.

>>> import html
>>> html.unescape('&lt;tag&gt;')
'<tag>'

반대로 눈에 보이는 것을 HTML 특수문자 형태로 표시하면 이름에서 유추할 수 있듯이 escape() 함수를 사용할 수 있다.

>>> import html
>>> html.escape('<tag>')
'&lt;tag&gt;'

여담

이런 기능을 굳이 사용할 일은 요즘엔 잘 없을 지도 모르겠지만 개인적인 프로젝트로 만들던 것(?)이 이런 기능이 필요해서 찾아보게 되었다.

혹시나 HTML이 아닌 URL의 HEX 인코딩 및 디코딩에 대해 알고 싶다면 해당 링크를 방문해 보자.

0 comments:

댓글 쓰기