安全なテキストの操作—MarkupSafeドキュメント
安全なテキストの操作
- 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 <em>World</em>!')
これは、一部のフレームワークが使用する
__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 & bar</em>') >>> Markup("<em>Hello</em> ") + "<foo>" Markup('<em>Hello</em> <foo>')
- classmethod escape(s: Any) markupsafe.Markup
文字列をエスケープします。 escape()を呼び出し、サブクラスに対して正しいタイプが返されるようにします。
- striptags() str
unscape()マークアップ、タグの削除、および空白の単一スペースへの正規化。
>>> Markup("Main » <em>About</em>").striptags() 'Main » About'
- unescape() str
エスケープされたマークアップをテキスト文字列に変換し直します。 これにより、HTMLエンティティがそれらが表す文字に置き換えられます。
>>> Markup("Main » <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()