python - 使用 urlparse (Python) 解析自定义 URI

标签 python url python-2.6 urlparse

我的应用程序创建自定义 URI(或 URL?)来识别对象并解析它们。问题在于 Python 的 urlparse 模块拒绝像解析 http 一样解析未知的 URL 方案。

如果我不调整 urlparse 的 uses_* 列表,我会得到这个:

>>> urlparse.urlparse("qqqq://base/id#hint")
('qqqq', '', '//base/id#hint', '', '', '')
>>> urlparse.urlparse("http://base/id#hint")
('http', 'base', '/id', '', '', 'hint')

这是我的做法,我想知道是否有更好的方法:

import urlparse

SCHEME = "qqqq"

# One would hope that there was a better way to do this
urlparse.uses_netloc.append(SCHEME)
urlparse.uses_fragment.append(SCHEME)

为什么没有更好的方法来做到这一点?

最佳答案

您还可以使用 urlparse 注册自定义处理程序:

import urlparse

def register_scheme(scheme):
    for method in filter(lambda s: s.startswith('uses_'), dir(urlparse)):
        getattr(urlparse, method).append(scheme)

register_scheme('moose')

这会将您的 url 方案附加到列表中:

uses_fragment
uses_netloc
uses_params
uses_query
uses_relative

uri 然后将被视为类似 http,并将正确返回路径、片段、用户名/密码等。

urlparse.urlparse('moose://username:password@hostname:port/path?query=value#fragment')._asdict()
=> {'fragment': 'fragment', 'netloc': 'username:password@hostname:port', 'params': '', 'query': 'query=value', 'path': '/path', 'scheme': 'moose'}

关于python - 使用 urlparse (Python) 解析自定义 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1417958/

相关文章:

python - pip install 实际上是做什么的?

ios - Swift:将前缀(字符串)添加到字符串中

spring - 带有多个参数的href spring

Pythonic 方式了解我的线程何时/为何退出

android - python sl4a unicode (Android)

Python Pypi : what is your process for releasing packages for different Python versions? (Linux)

python - 在无限循环中停止 python 脚本

python - 如何覆盖 Django 中的 model.Manager.create() 方法?

python - 无法让 Django 声明的应用程序路由作为页面工作

Python不逐行写入