将 HTML 实体转换为 Unicode,反之亦然

新手上路,请多包涵

如何在 Python 中将 HTML 实体转换为 Unicode,反之亦然?

原文由 hekevintran 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 318
2 个回答

你需要有 BeautifulSoup

 from BeautifulSoup import BeautifulStoneSoup
import cgi

def HTMLEntitiesToUnicode(text):
    """Converts HTML entities to unicode.  For example '&' becomes '&'."""
    text = unicode(BeautifulStoneSoup(text, convertEntities=BeautifulStoneSoup.ALL_ENTITIES))
    return text

def unicodeToHTMLEntities(text):
    """Converts unicode to HTML entities.  For example '&' becomes '&'."""
    text = cgi.escape(text).encode('ascii', 'xmlcharrefreplace')
    return text

text = "&, ®, <, >, ¢, £, ¥, €, §, ©"

uni = HTMLEntitiesToUnicode(text)
htmlent = unicodeToHTMLEntities(uni)

print uni
print htmlent
# &, ®, <, >, ¢, £, ¥, €, §, ©
# &amp;, &#174;, &lt;, &gt;, &#162;, &#163;, &#165;, &#8364;, &#167;, &#169;

原文由 hekevintran 发布,翻译遵循 CC BY-SA 2.5 许可协议

至于“反之亦然”(我需要自己,让我找到这个问题,但没有帮助,随后 另一个网站有答案):

 u'some string'.encode('ascii', 'xmlcharrefreplace')

将返回一个纯字符串,其中任何非 ascii 字符都转换为 XML (HTML) 实体。

原文由 Isaac 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题