有urllib.parse.quote的幂等版本吗?

胡安·卡洛斯·拉米雷斯

是否有幂等的urllib.parse.quote版本?该功能应满足:

urllib.parse.quote(x) == urllib.parse.quote(urllib.parse.quote(x))

足够广泛的x字符串。

如果我在逗号上测试功能,例如:

x = urllib.parse.quote(",")
y = urllib.parse.quote("x")

然后我得到了,x = '%2C'但是y = '%252C'对于逗号来说它不是幂等的。

如果尚不存在这样的功能,您能否描述一个实现?我在考虑使用:

my_unquote = lambda x: urllib.parse.quote(urllib.parse.unquote(x)) 但不确定这是否正确。

问题来自处理已部分编码的URL。

埃米特·巴特勒

URL编码本质上是非幂等的操作,因为%符号既是需要编码的输入,也是输出编码的组成部分(请参见此处的表)。这意味着大多数(任何?)URL编码的字符串都将包含字符(%),这些字符将在以后的编码过程中重新编码。

换句话说,仅通过检查字符串本身就无法知道给定的字符串是否已被URL编码。这使得编写幂等编码函数非常困难,甚至可能是不可能的。

根据您的用例,可以使用一些特定于域的变通办法来模拟幂等。例如,如果您知道给定URL的路径部分已编码,但方案未编码,则可以仅对方案运行编码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

urllib.parse.quote不会采用utf8

python 2.7中的等效urllib.parse.quote()

为什么 urllib.parse.quote 对 url 中的非保留字符进行编码?

Python 3 如何解决 urllib.parse.urlencode 在 Python 3.4.2 中缺少 quote_via

urllib3中没有默认密码属性吗?

urllib.parse.parse_qsl()如何处理`;`?

urllib.parse.urlparse不读取参数

无法导入urllib.request和urllib.parse

所有 REST 方法都是幂等的吗?

为什么 urllib.parse 在所有情况下都不能正确拆分 URL <scheme>:<number> ?

Schema.org有项目“ quote”吗?

python urllib.parse不保留路径部分

python 2.7中的等效urllib.parse.unquote()

如何使用urllib.parse.urlencode编码纬度和经度?

Python:导入urllib.quote

urllib.quote()引发KeyError

Javascript - 字符串是有效日期吗?Date.parse 没有抓住它

导入urllib.parse为jython 2.7.0返回“ ImportError:No module named parse”

我可以在python 2.6.5中为urllib.quote和urllib.unquote使用可用于Unicode的替代方法吗?

与单独保存相比,Parse.Object.saveAll有什么成本优势吗?

JSON.parse()可以指示有效的JSON格式吗?

kubernetes入口有版本吗?

有打包/解压版本吗?

有Flow的flatMapIterable版本吗?

urllib2.quote无法正常工作

parse.com承诺-每个“那么”我都需要有一个“错误”功能吗?

Python urllib vs httplib吗?

python 3.2错误说urllib.parse.urlencode()未定义

从命令行运行Python时,导入urllib.parse失败