gpt4 book ai didi

Python:如何解析包含 '..' 的 URL

转载 作者:太空狗 更新时间:2023-10-29 21:17:53 26 4
gpt4 key购买 nike

我需要唯一标识和存储一些 URL。问题是有时它们会包含“..”,例如 http://somedomain.com/foo/bar/../../some/url 基本上是 http://somedomain.com/some/url 如果我没记错的话。

是否有 Python 函数或巧妙的方法来解析此 URL?

最佳答案

有一个使用 urllib.parse.urljoin 的简单解决方案:

>>> from urllib.parse import urljoin
>>> urljoin('http://www.example.com/foo/bar/../../baz/bux/', '.')
'http://www.example.com/baz/bux/'

但是,如果没有尾部斜线(最后一个组件是文件,而不是目录),最后一个组件将被删除。

此修复程序使用 urlparse 函数提取路径,然后使用(的 posixpath 版本)os.path标准化组件。补偿 a mysterious issue with trailing slashes ,然后将 URL 重新连接在一起。以下是 doctestable:

from urllib.parse import urlparse
import posixpath

def resolve_components(url):
"""
>>> resolve_components('http://www.example.com/foo/bar/../../baz/bux/')
'http://www.example.com/baz/bux/'
>>> resolve_components('http://www.example.com/some/path/../file.ext')
'http://www.example.com/some/file.ext'
"""
parsed = urlparse(url)
new_path = posixpath.normpath(parsed.path)
if parsed.path.endswith('/'):
# Compensate for issue1707768
new_path += '/'
cleaned = parsed._replace(path=new_path)
return cleaned.geturl()

关于Python:如何解析包含 '..' 的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com