문제

이 질문은 이미 여기에 답이 있습니다.

누구든지 파이썬에서 HTML 엔티티 코드로 문자열을 변환하는 쉬운 방법을 알고 있습니까 (예 : &lt; &amp;) 일반 문자열 (예 : <&)에?

cgi.escape() 끈을 피할 것입니다 (가난하게). unescape().

도움이 되었습니까?

해결책

htmlparser 표준 라이브러리에 기능이 있습니다. 불행히도 문서화되지 않은 것입니다.

(python2 문서)

>>> import HTMLParser
>>> h= HTMLParser.HTMLParser()
>>> h.unescape('alpha &lt; &beta;')
u'alpha < \u03b2'

(파이썬 3 문서)

>>> import html.parser
>>> h = html.parser.HTMLParser()
>>> h.unescape('alpha &lt; &beta;')
'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())
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top