Python Tornado入门教程 Tornado 转义和字符串操作

2024-02-25 开发教程 Python Tornado入门教程 匿名 0

HTML、JSON、URL 等转义和tornado.escape.utf8(value: Union[None, str, bytes]) → Optional[bytes]取消转义的方法。

还包括随着时间的推移逐渐出现的一些其他杂项字符串操作函数。

转义函数

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

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

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

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

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

取消转义 XML 转义字符串。

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

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

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

3.1 版新功能:​plus​参数

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

从 URL 解码给定的值。

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

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

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

3.1 版新功能:​plus​参数

tornado.escape.json_encode(value: Any) → str

JSON 编码给定的 Python 对象

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

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

支持 ​str和 ​bytes输入。

字节和Unicode 转换

tornado.escape.utf8(value: Union[None, str, bytes]) → Optional[bytes]

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

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

tornado.escape.to_unicode(value: Union[None, str, bytes]) → Optional[str]

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

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

tornado.escape.to_basestring()

将字节或 unicode 字符串转换为 ​str类型。 这些函数用于帮助从 Python 2 过渡到 Python 3,但现在已弃用 ​to_unicode的别名。

tornado.escape.recursive_unicode(obj: Any) → Any

走一个简单的数据结构,将字节字符串转换为 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

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

例如:​linkify("Hello http://tornadoweb.org!")​ 将返回 ​Hello <a href="http://tornadoweb.org" rel="external nofollow" target="_blank" >http://tornadoweb.org</a>!

参数:

shorten​:将缩短长网址以进行显示。

extra_params​:包含在链接标记中的额外文本,或将链接作为参数并返回额外文本的可调用对象,例如:linkify(text,extra_params='rel="nofollow" ')​,或者:

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 也将被链接。

allowed_protocols​:应该链接的协议列表(或集合),例如​linkify(text,allowed_protocols=[“http”,“ftp”,“mailto”])​。 包含诸如javascript之类的协议是非常不安全的。

tornado.escape.squeeze(value: str) → str

用单个空格替换所有空白字符序列