Skip to main content

tornado.escape —转义和字符串操作

HTML,JSON,URL和其他的转义/取消转义方法。

还包括一些其他杂项字符串操作功能,随着时间的推移。

转义函数

tornado.escape.xhtml_escape(value)[源代码]

转义字符串,使其在HTML或XML中有效。

转义字符 <>"'&。在属性值中使用时,转义字符串必须用引号括起来。

在 3.2 版更改: 将单引号添加到转义字符列表中。

tornado.escape.xhtml_unescape(value)[源代码]

解除转义XML转义的字符串。

tornado.escape.url_escape(value, plus=True)[源代码]

返回给定值的URL编码版本。

如果 plus 为true(默认值),空格将表示为“+”而不是“%20”。这适用于查询字符串,但不适用于URL的路径组件。注意,这个默认值与Python的urllib模块相反。

3.1 新版功能: plus 参数

tornado.escape.url_unescape(value, encoding='utf-8', plus=True)[源代码]

从URL解码给定值。

参数可以是字节或unicode字符串。

如果encoding为None,结果将是一个字节字符串。否则,结果是指定编码中的unicode字符串。

如果 plus 为true(默认值),加号将被解释为空格(文字加号必须表示为“%2B”)。这适用于查询字符串和表单编码值,但不适用于URL的路径组件。注意,这个默认值与Python的urllib模块相反。

3.1 新版功能: plus 参数

tornado.escape.json_encode(value)[源代码]

JSON编码给定的Python对象。

tornado.escape.json_decode(value)[源代码]

返回给定JSON字符串的Python对象。

字节/Unicode字符转换

这些函数在Tornado本身广泛使用,但不应该被大多数应用程序直接需要。注意,这些函数的很多复杂性来自于Tornado同时支持Python 2和Python 3的事实。

tornado.escape.utf8(value)[源代码]

将字符串参数转换为字节字符串。

如果参数已经是字节字符串或None,则返回不变。否则,它必须是一个unicode字符串,并编码为utf8。

tornado.escape.to_unicode(value)[源代码]

将字符串参数转换为unicode字符串。

如果参数已经是一个unicode字符串或None,则返回不变。否则它必须是字节字符串,并解码为utf8。

tornado.escape.native_str()

将字节或unicode字符串转换为类型 str。相当于Python 2上的 utf8 和Python 3上的 to_unicode

tornado.escape.to_basestring(value)[源代码]

将字符串参数转换为basestring的子类。

在python2中,字节和unicode字符串大多是可互换的,因此处理用户提供的参数和ascii字符串常量的函数可以使用任何一种,并应返回用户提供的类型。在python3中,这两种类型是不可互换的,因此需要这种方法将字节字符串转换为unicode。

tornado.escape.recursive_unicode(obj)[源代码]

走一个简单的数据结构,将字节字符串转换为unicode。

支持列表,元组和字典。

其他功能

tornado.escape.linkify(text, shorten=False, extra_params='', require_protocol=False, permitted_protocols=['http', 'https'])[源代码]

将纯文本转换为带有链接的HTML。

例如:linkify("Hello http://tornadoweb.org!") 将返回 Hello <a href="http://tornadoweb.org">http://tornadoweb.org</a>!

参数:

  • shorten:长网址将缩短显示。

  • 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:仅链接包含协议的网址。如果

    这是False,urles如www.facebook.com也将链接。

  • permitted_protocols:应该是的协议的列表(或集合)

    链接,例如。 linkify(text, permitted_protocols=["http", "ftp", "mailto"])。包括诸如 javascript 的协议是非常不安全的。

tornado.escape.squeeze(value)[源代码]

用一个空格替换所有空格字符序列。