5

'£'HTML エンティティを人間が読める形式、たとえば「£」、'°'「°」などに変換したいと考えています。

この質問に関するいくつかの投稿を読みました

Python 2.x を使用して HTML ソース コンテンツを読み取り可能な形式に変換する

Python文字列でHTMLエンティティをデコードしますか?

Python で XML/HTML エンティティを Unicode 文字列に変換する

彼らによると、文書化されていない関数 unescape() を使用することにしましたが、うまくいきません...

私のコードサンプルは次のようなものです:

import HTMLParser

htmlParser = HTMLParser.HTMLParser()
decoded = htmlParser.unescape('© 2013')
print decoded

この python スクリプトを実行すると、出力は次のようになります。

© 2013

それ以外の

© 2013

私は Python 2.X を使用しており、Windows 7 と Cygwin コンソールで作業しています。私はグーグルで検索しましたが、同様の問題は見つかりませんでした..誰かが私を助けてくれますか?

4

3 に答える 3

6

どうやらPython 2.6より前はもう少し原始的HTMLParser.unescapeでした。

パイソン 2.5:

>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape('©')
'©'

Python 2.6/2.7:

>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape('©')
u'\xa9'

2.5 の実装2.6 の実装/ 2.7 の実装を比較してください。

于 2014-04-04T10:26:26.740 に答える
1

このサイトにはいくつかの解決策がリストされています。そのうちの 1 つを次に示します。

from xml.sax.saxutils import escape, unescape

html_escape_table = {
    '"': """,
    "'": "'",
    "©": "©"
    # etc...
}
html_unescape_table = {v:k for k, v in html_escape_table.items()}

def html_unescape(text):
    return unescape(text, html_unescape_table)

ただし、エスケープされた各シンボルを手動でリストする必要があるため、最も美しいものではありません。

編集:

これはどう?

import htmllib

def unescape(s):
    p = htmllib.HTMLParser(None)
    p.save_bgn()
    p.feed(s)
    return p.save_end()
于 2013-07-19T17:15:50.427 に答える