【发布时间】:2012-05-22 00:39:59
【问题描述】:
我正在寻找一个库函数来规范化 Python 中的 URL,即删除路径中的“./”或“../”部分,或者添加默认端口或转义特殊字符等。结果应该是指向同一网页的两个 URL 唯一的字符串。例如http://google.com 和http://google.com:80/a/../ 应该返回相同的结果。
我更喜欢 Python 3,并且已经浏览过 urllib 模块。它提供了拆分 URL 的功能,但没有将它们规范化。 Java 有 URI.normalize() 函数做类似的事情(虽然它不认为默认端口 80 等于没有给定端口),但是有没有类似的东西是 python?
【问题讨论】:
-
附带说明,
http://google.com/等资源与http://google.com:80/a/../不同。也就是说,如果/a不存在,那么第二条路径将失败。通过“规范化”它,你会失去那个特殊情况,当你从一个无效的 URI 开始时,你会得到一个有效的 URI... -
这是不正确的,无论如何在浏览器中都不正确。即使a不存在,你也可以写google.com:80/a/..,它会转到google.com:80。这是因为浏览器在发送到服务器之前会进行初始解析。在服务器端,不同的服务器有不同的行为方式。
标签: url python-3.x normalization