1. ホーム
  2. python

[解決済み] PythonでHTMLをエスケープする最も簡単な方法は何ですか?

2022-04-27 12:49:54

質問

cgi.escapeは一つの選択肢のような気がします。 これはうまく機能するのでしょうか? もっと良いものがあるのでしょうか?

解決方法は?

cgi.escape は大丈夫です。エスケープされます。

  • <&lt;
  • > から &gt;
  • & から &amp;

これですべてのHTMLが揃いました。

編集: もし、ASCII文字以外の文字をエスケープして、別のエンコーディングの文書に含める場合は、例えば、次のようにします。 クレイグ を使えばいいんです。

data.encode('ascii', 'xmlcharrefreplace')

をデコードすることを忘れないでください。 dataunicode を、それがどのようなエンコーディングであったとしても、最初に使用します。

しかし、私の経験では、この種のエンコーディングは、単に unicode は最初からずっと ただ、最後にドキュメントヘッダで指定されたエンコーディングにエンコードする ( utf-8 互換性を最大にするため)

>>> cgi.escape(u'<a>bá</a>').encode('ascii', 'xmlcharrefreplace')
'&lt;a&gt;b&#225;&lt;/a&gt;

また、特筆すべきは、(Gregに感謝)追加された quote パラメータ cgi.escape を取ります。これを設定すると True , cgi.escape は、ダブルクォート文字 ( " というように、XML/HTMLの属性で使用することができます。

EDIT: Python 3.2 で cgi.escape は非推奨となり、代わりに html.escape という点を除いては同じです。 quote はデフォルトでTrueになります。