安全なテキストの操作—MarkupSafeドキュメント

提供:Dev Guides
Markupsafe/docs/1.1.x/escaping
移動先:案内検索

安全なテキストの操作

markupsafe.escape()

文字列内の文字&<>'、および"をHTMLセーフシーケンスに置き換えます。 HTMLでそのような文字を含む可能性のあるテキストを表示する必要がある場合は、これを使用します。

オブジェクトに__html__メソッドがある場合、そのオブジェクトが呼び出され、戻り値はHTMLに対してすでに安全であると見なされます。

パラメーター

s –文字列に変換されてエスケープされるオブジェクト。

戻り値

エスケープされたテキストを含む Markup 文字列。

class markupsafe.Markup(base: Any = , encoding: Optional[str] = None, errors: str = 'strict')

エスケープされたか、安全とマークされたために、HTMLまたはXMLドキュメントに安全に挿入する準備ができている文字列。

オブジェクトをコンストラクターに渡すと、オブジェクトがテキストに変換されてラップされ、エスケープせずに安全であるとマークされます。 テキストをエスケープするには、代わりに escape()クラスメソッドを使用します。

>>> Markup("Hello, <em>World</em>!")
Markup('Hello, <em>World</em>!')
>>> Markup(42)
Markup('42')
>>> Markup.escape("Hello, <em>World</em>!")
Markup('Hello &lt;em&gt;World&lt;/em&gt;!')

これは、一部のフレームワークが使用する__html__()インターフェースを実装します。 __html__()を実装するオブジェクトを渡すと、そのメソッドの出力がラップされ、安全であるとマークされます。

>>> class Foo:
...     def __html__(self):
...         return '<a href="/foo">foo</a>'
...
>>> Markup(Foo())
Markup('<a href="/foo">foo</a>')

これはstrのサブクラスです。 同じメソッドがありますが、引数をエスケープしてMarkupインスタンスを返します。

>>> Markup("<em>%s</em>") % ("foo & bar",)
Markup('<em>foo &amp; bar</em>')
>>> Markup("<em>Hello</em> ") + "<foo>"
Markup('<em>Hello</em> &lt;foo&gt;')
classmethod escape(s: Any) markupsafe.Markup

文字列をエスケープします。 escape()を呼び出し、サブクラスに対して正しいタイプが返されるようにします。

striptags() str

unscape()マークアップ、タグの削除、および空白の単一スペースへの正規化。

>>> Markup("Main &raquo;        <em>About</em>").striptags()
'Main » About'
unescape() str

エスケープされたマークアップをテキスト文字列に変換し直します。 これにより、HTMLエンティティがそれらが表す文字に置き換えられます。

>>> Markup("Main &raquo; <em>About</em>").unescape()
'Main » <em>About</em>'

オプション値

markupsafe.escape_silent()

escape()と同様ですが、Noneを空の文字列として扱います。 オプションの値を使用すると便利です。そうでない場合、値がNoneのときに文字列'None'を取得します。

>>> escape(None)
Markup('None')
>>> escape_silent(None)
Markup('')


オブジェクトを文字列に変換する

markupsafe.soft_unicode()