tornado.escape — エスケープと文字列操作

HTML、JSON、URLなどに対するエスケープ/アンエスケープメソッド。

また、時間の経過とともに追加されてきたその他の様々な文字列操作関数も含まれています。

このモジュールの多くの関数は、標準ライブラリにほぼ同等のものがあります(違いは主にバイトとUnicode文字列の処理に関するもので、Python 2ではより重要でした)。新しいコードでは、該当する場合は、このモジュールではなく標準ライブラリの関数を推奨します。詳細は各関数のdocstringを参照してください。

エスケープ関数

tornado.escape.xhtml_escape(value: Union[str, bytes]) str[source]

HTMLまたはXML内で有効な文字列にエスケープします。

文字 <>"'、および & をエスケープします。属性値で使用する場合、エスケープされた文字列は引用符で囲む必要があります。

html.escape と同等ですが、この関数は常に str 型を返し、html.escape は入力が bytes の場合は bytes を返します。

バージョン 3.2 で変更されました: シングルクォートがエスケープする文字のリストに追加されました。

バージョン 6.4 で変更されました: 現在は html.escape を単純にラップします。シングルクォートが &#x27; ではなく &#39; としてエスケープされることを除いて、以前の動作と等価であり、パフォーマンスが異なる場合があります。

tornado.escape.xhtml_unescape(value: Union[str, bytes]) str[source]

XMLエスケープされた文字列のアンエスケープを行います。

html.unescape と同等ですが、この関数は常に str 型を返し、html.unescape は入力が bytes の場合は bytes を返します。

バージョン 6.4 で変更されました: 現在は html.unescape を単純にラップします。これは、HTML 5仕様 https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state によって要求されるように、いくつかの入力の動作を変更します。

サロゲートなどの無効な入力は、エラーが発生するようになり、特定のISO-8859-1文字の数値参照が正しく処理されるようになりました。

tornado.escape.url_escape(value: Union[str, bytes], plus: bool = True) str[source]

与えられた値のURLエンコードされたバージョンを返します。

plus引数に応じて、urllib.parse.quote_plusまたはurllib.parse.quoteのいずれかと同等です。

plusがtrue(デフォルト)の場合、スペースは+で、スラッシュは%2Fで表されます。これはクエリ文字列に適しています。plusがfalseの場合、スペースは%20で表され、スラッシュはそのままです。これはURLのパスコンポーネントに適しています。plus=Trueのデフォルトは、Pythonのurllibモジュールの事実上の逆です。

バージョン 3.1 で追加されました: plus引数

tornado.escape.url_unescape(value: Union[str, bytes], encoding: None, plus: bool = True) bytes[source]
tornado.escape.url_unescape(value: Union[str, bytes], encoding: str = 'utf-8', plus: bool = True) str

与えられた値をURLからデコードします。

引数はバイト文字列またはUnicode文字列のいずれかです。

encodingがNoneの場合、結果はバイト文字列になり、この関数はplus=Falseの場合urllib.parse.unquote_to_bytesと等価になります。それ以外の場合は、指定されたエンコーディングのUnicode文字列が結果になり、この関数はurllib.parse.unquote_plusまたはurllib.parse.unquoteと等価になりますが、この関数はbytesも入力として受け入れます。

plusがTrueの場合(デフォルト)、プラス記号はスペースとして解釈されます(リテラルのプラス記号は「%2B」で表す必要があります)。これは、クエリ文字列とフォームエンコードされた値には適していますが、URLのパスコンポーネントには適していません。このデフォルトは、Pythonのurllibモジュールの逆であることに注意してください。

バージョン 3.1 で追加されました: plus引数

tornado.escape.json_encode(value: Any) str[source]

与えられたPythonオブジェクトをJSONエンコードします。

json.dumpsと等価ですが、出力に</文字列が含まれないことが保証されています。これは、JSONがHTMLの<script>タグに埋め込まれている場合に問題になる可能性があります。

tornado.escape.json_decode(value: Union[str, bytes]) Any[source]

与えられたJSON文字列のPythonオブジェクトを返します。

strbytesの両方の入力をサポートします。json.loadsと等価です。

バイト/Unicode変換

tornado.escape.utf8(value: bytes) bytes[source]
tornado.escape.utf8(value: str) bytes
tornado.escape.utf8(value: None) None

文字列引数をバイト文字列に変換します。

引数が既にバイト文字列またはNoneの場合、変更されずに返されます。それ以外の場合は、Unicode文字列でなければならず、utf8としてエンコードされます。

tornado.escape.to_unicode(value: str) str[source]
tornado.escape.to_unicode(value: bytes) str
tornado.escape.to_unicode(value: None) None

文字列引数をUnicode文字列に変換します。

引数が既にUnicode文字列またはNoneの場合、変更されずに返されます。それ以外の場合は、バイト文字列でなければならず、utf8としてデコードされます。

tornado.escape.native_str()
tornado.escape.to_basestring()

バイト文字列またはUnicode文字列をstr型に変換します。これらの関数は、Python 2からPython 3への移行を支援するために使用されていましたが、現在はto_unicodeの非推奨のエイリアスです。

tornado.escape.recursive_unicode(obj: Any) Any[source]

単純なデータ構造を巡回し、バイト文字列をUnicodeに変換します。

リスト、タプル、ディクショナリをサポートします。

その他の関数

tornado.escape.linkify(text: Union[str, bytes], shorten: bool = False, extra_params: Union[str, Callable[[str], str]] = '', require_protocol: bool = False, permitted_protocols: List[str] = ['http', 'https']) str[source]

プレーンテキストをリンク付きのHTMLに変換します。

例:linkify("Hello http://tornadoweb.org!")Hello <a href="http://tornadoweb.org">http://tornadoweb.org</a>! を返します。

パラメータ

  • shorten: 長いURLは表示のために短縮されます。

  • extra_params: リンクタグに含める追加のテキスト、またはリンクを引数に取り追加のテキストを返す呼び出し可能オブジェクト(例: linkify(text, extra_params='rel="nofollow" class="external"')、または

    def extra_params_cb(url):
        if url.startswith("http://example.com"):
            return 'class="internal"'
        else:
            return 'class="external" rel="nofollow"'
    linkify(text, extra_params=extra_params_cb)
    
  • require_protocol: プロトコルを含むURLのみをリンク化します。Falseの場合、www.facebook.comなどのURLもリンク化されます。

  • permitted_protocols: リンク化するプロトコルのリスト(またはセット)、例: linkify(text, permitted_protocols=["http", "ftp", "mailto"])javascriptなどのプロトコルを含めることは非常に危険です。

tornado.escape.squeeze(value: str) str[source]

空白文字のすべてのシーケンスを単一のスペースに置き換えます。