HTML 엔티티 코드 텍스트 [복제
-
20-08-2019 - |
문제
이 질문은 이미 여기에 답이 있습니다.
누구든지 파이썬에서 HTML 엔티티 코드로 문자열을 변환하는 쉬운 방법을 알고 있습니까 (예 : <
&
) 일반 문자열 (예 : <&)에?
cgi.escape()
끈을 피할 것입니다 (가난하게). unescape()
.
해결책
htmlparser 표준 라이브러리에 기능이 있습니다. 불행히도 문서화되지 않은 것입니다.
(python2 문서)
>>> import HTMLParser
>>> h= HTMLParser.HTMLParser()
>>> h.unescape('alpha < β')
u'alpha < \u03b2'
(파이썬 3 문서)
>>> import html.parser
>>> h = html.parser.HTMLParser()
>>> h.unescape('alpha < β')
'alpha < \u03b2'
htmlentityDefs 문서화되어 있지만 많은 일을 직접 수행해야합니다.
XML 사전 정의 된 엔티티 (lt, gt, amp, quot, apos) 만 있으면 minidom을 사용하여 구문 분석 할 수 있습니다. 사전 정의 된 엔티티 만 필요하고 숫자 문자 참조가 필요하지 않은 경우 속도를 위해 평범한 오래된 문자열 교체 만 사용할 수도 있습니다.
다른 팁
처음에는 태그를 잊어 버렸지 만 BeautifulSoup을 사용하고 있습니다.
문서에서 파고 들면서 다음을 발견했습니다.
soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
내가 바라는대로 정확하게 그렇게합니다.
Python stdlib에 HTML을 UNESCAPE HTML에 내장 된 것은 없지만, 귀하의 요구에 맞게 조정할 수있는 짧은 스크립트가 있습니다. http://www.w3.org/qa/2008/04/unescape-html-entities-python.html.
사용 htmlentityDefs 기준 치수. 이 내 오래된 코드는 효과가 있었지만 더 깨끗하고 더 많은 피스닉 방법이 있다고 확신합니다.
e2c = dict(('&%s;'%k,eval("u'\\u%04x'"%v)) for k, v in htmlentitydefs.name2codepoint.items())