学びをアウトプットするブログ

pythoでhtmlのエスケープをする方法

htmlをブログ本文に埋め込んで表示しようと思ったら、その部分が表示されないんですね。 例えばhtmlの基本的な形をブログ内で表示させてみましょう

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>タイトル</title>
</head>
<body>

</body>
</html>

こういうやつです。 よくありますね。HTML5でwebサイトを作るときのベースとなる部分です。

でもこのhtmlの要素はそのままブログに書くことができません。 だって今書いている文書もhtmlで書いているのですから、そのまま書いてしまうと、このブログのHTML要素だと解釈されてしまいます。 そこでpre内で記入するときにも特殊文字(<、 >)をエスケープしてあげないといけません。 ただいくつも要素があるとエスケープするのも面倒なのでサクッとエスケープできるようにPythonで書いてみました。

Pythonでhtmlエスケープ

Pythonでhtmlエスケープするにはモジュールxml.sax.saxutils.escapeを利用するようです。xml.sax.saxutils — SAX ユーティリティ

文字列データ内の '&', '<', '>' をエスケープします。

やりたいことそのままですね。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from xml.sax.saxutils import escape

url = #ここにエスケープしたいHTML要素を書く
escape_url = escape(url)

print(escape_url)

これでエスケープされたhtmlが表示されます。