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

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

安全なテキストの操作

markupsafe.escape()

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

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

パラメーター

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

戻り値

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

class markupsafe.Markup(base=, encoding=None, errors='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;')
パラメーター
  • ベース任意)–

  • エンコーディングオプション [ str ] )–

  • エラーstr )–

リターンタイプ

マークアップ

classmethod escape(s)

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

パラメーター

sAny )–

リターンタイプ

markupsafe.Markup

striptags()

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

>>> Markup("Main &raquo;        <em>About</em>").striptags()
'Main » About'
リターンタイプ

str

unescape()

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

>>> Markup("Main &raquo; <em>About</em>").unescape()
'Main » <em>About</em>'
リターンタイプ

str

オプション値

markupsafe.escape_silent()

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

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


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

markupsafe.soft_str()

オブジェクトを文字列に変換していない場合は、変換します。 これにより、 Markup 文字列が基本文字列に変換されるのではなく保持されるため、安全としてマークされ、再度エスケープされることはありません。

>>> value = escape("<User 1>")
>>> value
Markup('&lt;User 1&gt;')
>>> escape(str(value))
Markup('&amp;lt;User 1&amp;gt;')
>>> escape(soft_str(value))
Markup('&lt;User 1&gt;')