作为Python的新手,我已经花了很多时间

example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0

到python 2.7:example.com?title==правовая+защита中的这个

url=urllib.unquote(url.encode("utf8"))是非常丑陋的东西.

仍然没有解决方案,如有任何帮助,我们将不胜感激.

推荐答案

数据是使用URL引号转义的UTF-8编码字节,因此您希望使用decodeurllib.parse.unquote(),它透明地处理从百分比编码的数据到UTF-8字节再到文本的解码:

from urllib.parse import unquote

url = unquote(url)

演示:

>>> from urllib.parse import unquote
>>> url = 'example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0'
>>> unquote(url)
'example.com?title=правовая+защита'

Python2等效值为urllib.unquote(),但它返回一个字节字符串,因此您必须手动解码:

from urllib import unquote

url = unquote(url).decode('utf8')

Python相关问答推荐

Pandas基于另一列的价值的新列

重命名变量并使用载体中的字符串存储 Select 该变量

如何从格式为note:{neighbor:weight}的字典中构建networkx图?

如何使用PyTest根据self 模拟具有副作用的属性

即使在可见的情况下也不相互作用

删除最后一个pip安装的包

如何避免Chained when/then分配中的Mypy不兼容类型警告?

将两只Pandas rame乘以指数

如何找到满足各组口罩条件的第一行?

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

在极性中创建条件累积和

如何从数据库上传数据到html?

部分视图的DataFrame

计算分布的标准差

索引到 torch 张量,沿轴具有可变长度索引

计算天数

如何在Python中获取`Genericums`超级类型?

如何指定列数据类型

Pandas:计算中间时间条目的总时间增量

基于多个数组的多个条件将值添加到numpy数组