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
を単純にラップします。シングルクォートが'
ではなく'
としてエスケープされることを除いて、以前の動作と等価であり、パフォーマンスが異なる場合があります。
- 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>
タグに埋め込まれている場合に問題になる可能性があります。
バイト/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.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
などのプロトコルを含めることは非常に危険です。