【问题标题】:pre Python 3.4 HTML entity unescapingpre Python 3.4 HTML 实体取消转义
【发布时间】:2014-11-21 05:45:12
【问题描述】:

注意:This 让您在 Python 3.4 之前的版本上进行 3.4 HTML5 实体转换!

我正在为 Markdown 的 CommonMark 规范编写一个解析器+渲染器,我正在尝试找出在各种 python 版本中转义 HTML 实体的最佳方法。

对于 Python 3,我使用 html.parser.HTMLParser().unescape,对于 Python 2,我使用 HTMLParser.HTMLParser().unescape。它们本质上是相同的函数,只是后来的 Python 版本更新了实体定义表,因为这个字符串在 Python 3.4 中可以正常工作

#␣Ӓ␣Ϡ␣� => #␣Ӓ␣Ϡ␣�

Python 3.3 和 2 上的结果

#␣Ӓ␣Ϡ␣� => #␣Ӓ␣Ϡ␣�

这也发生在各种其他 HTML 实体中,即

Ď␣ℋ␣ⅆ␣∲

我想知道是否有人知道这样做的方法是交叉兼容的,或者在 3.4 之前的版本上运行良好,不需要 3rd 方模块?

我试图避免基本上从 python 3.4 复制实体表并将其存储在某个文件中:

【问题讨论】:

  • 如果您不想依赖第三方包(可能存在也可能不存在),我担心“复制整个表格”是您唯一的选择。
  • 是的,这就是我害怕的,哦,好吧。不可能那么糟糕...

标签: python html python-3.x python-2.x


【解决方案1】:

你可以使用 Python 库html5charref

$ pip install git+https://github.com/bpabel/html5charref.git

然后按如下方式使用:

html = u'This has © and < and © symbols'
print html5charref.unescape(html)
# u'This has \uxa9 and < and \uxa9 symbols' 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    相关资源
    最近更新 更多