2012-03-08 25 views
5

私はこれまでに見つかったすべてのドキュメントと参考文献として、"%$!&@á é ©"のような特殊文字と、'<&">'のような特殊文字を変換したいと考えています。 cgi.escapeは問題を解決しません。特殊文字をHTMLエンティティに変換するには?

たとえば、文字列"á ê ĩ &""&aacute; &ecirc; &itilde; &amp;"に変換する必要があります。

anyboyはそれを解決する方法を知っていますか? 私はPython 2.6を使用しています。

+2

2つのことに注意してください。(1)名前のエンティティが問題を引き起こす可能性があります。代わりに数字のエンティティを使用してください。 (2)エンティティを使用する理由ほとんどの場合、文書をUTF-8エンコードしてエンティティを使用せず、文字を含むことができるようにすることをお勧めします。 –

+1

http://wiki.python.org/moin/EscapingHtml – Quentin

+0

@KonradRudolphに同意します。私はエンティティを使用するのが好きではありませんが、私が作業しているシステムが使用するので、私は選択肢がありません。 =/ –

答えて

7

あなたが探しているものがhtmlentitydefs.codepoint2name

+0

それは良い考えです! ; D –

+0

リンクは機能していません。 Python 2ではHTMLParser、Python 3ではhtml.parserを使用してください。 – oxidworks

5

であるあなたがhttp://docs.python.org/library/htmllib.html#module-htmlentitydefs

で見つけることができる辞書を使用して、独自のループを構築することができ、私は@Ruben htmlentitydefs.codepoint2nameの検索ソリューションに組み込まれましたVermeerschは彼の答えで言った。ソリューションは、ここに発見された:

def htmlescape(text): 
    text = (text).decode('utf-8') 

    from htmlentitydefs import codepoint2name 
    d = dict((unichr(code), u'&%s;' % name) for code,name in codepoint2name.iteritems() if code!=38) # exclude "&"  
    if u"&" in text: 
     text = text.replace(u"&", u"&amp;") 
    for key, value in d.iteritems(): 
     if key in text: 
      text = text.replace(key, value) 
    return text 

が助けてありがとうございました:http://bytes.com/topic/python/answers/594350-convert-unicode-chars-html-entities

ここでの機能です! ;)