Python:连接多个组件来构建 URL

2024-01-12

我正在尝试通过加入一些动态组件来构建 URL。我想用类似的东西os.path.join()但对于我来说的 URL 来说。通过研究我发现urlparse.urljoin()做同样的事情。然而,看起来一次只需要两个参数。

到目前为止,我有以下有效但看起来重复的内容:

    a = urlparse.urljoin(environment, schedule_uri)
    b = urlparse.urljoin(a, str(events_to_hours))
    c = urlparse.urljoin(b, str(events_from_date))
    d = urlparse.urljoin(c, str(api_version))
    e = urlparse.urljoin(d, str(id))
    url = e + '.json'

输出=http://example.com/schedule/12/20160322/v1/1.json

上面的方法有效,我尝试以这种方式缩短它:

url_join_items = [environment, schedule_uri, str(events_to_hours),
                  str(events_from_date), str(api_version), str(id), ".json"]
new_url = ""
for url_items in url_join_items:
    new_url = urlparse.urljoin(new_url, url_items)

Output: http://example.com/schedule/.json

但第二个实现不行。请建议我如何解决这个问题或更好的方法。

编辑1: 的输出reduce解决方案看起来像这样(不幸的是): 输出:http://example.com/schedule/.json


使用连接

你有没有尝试过简单"/".join(url_join_items)。 http不是总是使用正斜杠吗?不过,您可能必须手动设置前缀“https://”和后缀。

就像是:

url = "https://{}.json".format("/".join(url_join_items))

使用reduce和urljoin

这里有一个相关问题 https://stackoverflow.com/questions/10893374/python-confusions-with-urljoinSO 在某种程度上解释了实施背后的想法urljoin。您的用例似乎不是最合适的。

使用时reduce and urljoin,我不确定它会做问题的意图,这在语义上就像os.path.join,但对于网址。考虑以下:

from urllib.parse import urljoin
from functools import reduce

parts_1 = ["a","b","c","d"]
parts_2 = ["https://","server.com","somedir","somefile.json"]
parts_3 = ["https://","server.com/","somedir/","somefile.json"]

out1 = reduce(urljoin, parts_1)
print(out1)

d

out2 = reduce(urljoin, parts_2)
print(out2)

https:///somefile.json

out3 = reduce(urljoin, parts_3)
print(out3)

https:///server.com/somedir/somefile.json

请注意,除了 https 前缀后面的额外“/”之外,第三个输出可能最接近询问者的意图,除非我们必须完成使用分隔符格式化各部分的所有工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:连接多个组件来构建 URL 的相关文章

  • Python包不安装子模块

    我在 dev 分支中创建了一个具有以下结构的包 在验证包安装正确之前不会合并到 main mypackage init py setup py requirements txt module py subpackage one init p
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 帮助需要在可选条件下编写正则表达式[关闭]

    我有一个日志文件包含如下内容 log Using data from yyyy mm dd 2011 8 3 0 files queued for scanning Warning E test H ndler pdf File not F
  • 我怎样才能在python cgi中找到上传的文件名

    我制作了如下简单的网络服务器 import BaseHTTPServer os cgi import cgitb cgitb enable html
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • 有条件填写 pandas 数据框

    我有一个数据框df列中包含浮点值A 我想添加另一列B这样 B 0 A 0 for i gt 0 B i if np isnan A i then A i else Step3 B i if abs B i 1 A i B i 1 lt 0
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 绘制“plot”而不是“scatter”时,图例选择会中断

    再会 这个问题是后续问题为什么图例选取仅适用于 ax twinx 而不适用于 ax https stackoverflow com q 60167378 9282844 下面提供的最小代码分别绘制了两条曲线ax1 and ax2 ax1 t
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • 当 DetailView 遇到时更新模型字段。 [姜戈]

    我有一个类似的 DetailViewviews py views py class CustomView DetailView context object name content model models AppModel templa
  • 如何使用 python 操作系统更改驱动器?

    我正在尝试更改当前目录C to Y 我试过 import os os chdir Y 但我不断收到错误消息 提示无法找到驱动器 本质上我正在寻找相当于 cd d cmd 中的命令 你确定吗Y 确实是有效的驱动器号吗 Try os chdir
  • 如何使用python读取最后一行的特定位置

    我有一个太大的 txt 文件 并且有几行类似的行 如下所示 字1 字2 字3 字4 553 75 我对位置 4 值 感兴趣 即最后一行 553 75 我的文件文本 word1 word2 word3 word4 553 20 word1 w
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 如何使用 msgpack 进行读写?

    如何序列化 反序列化字典data with msgpack http msgpack org The Python 文档 http msgpack python readthedocs io en latest badge latest似乎
  • 管理文件字段当前 url 不正确

    在 Django 管理中 只要有 FileField 编辑页面上就会有一个 当前 框 其中包含指向当前文件的超链接 但是 此链接会附加到当前页面 url 因此会导致 404 因为不存在这样的页面 例如 http 127 0 0 1 8000
  • 请求response.iter_content()获取不完整的文件(1024MB而不是1.5GB)?

    您好 我一直在使用此代码片段从网站下载文件 到目前为止 小于 1GB 的文件都很好 但我注意到 1 5GB 文件不完整 s is requests session object r s get fileUrl headers headers
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • 在 Tensorflow 2.0 中的简单 LSTM 层之上添加 Attention

    我有一个由一个 LSTM 和两个 Dense 层组成的简单网络 如下所示 model tf keras Sequential model add layers LSTM 20 input shape train X shape 1 trai
  • Jinja2中获取请求参数

    如何检索请求参数a在 Jinja2 模板中 http foo bar a 1 我这个答案有点晚了 但其他解决方案并没有真正考虑到您对 Flask 的使用 事实上 您将 Flask 与 Jinja2 一起使用 这使得您的情况与其他框架有点不同

随机推荐

  • 无法解析方法startActivity()

    我是 Android 开发新手 在更改活动时遇到了一些问题 我正在尝试从方法内更改活动 但收到错误cannot resolve method startActivity并在参数结束时出现错误Cannot resolve constructo
  • VueJS webpack PWA 资产图标 manifest.json

    我配置了我的 PWAmanifest json in vue config js 如下所示 如何配置 PWA 图标以引用内部的图像assets folder module exports pwa manifestOptions name p
  • 从 Pandas 数据框中删除“主导”行(所有值都低于任何其他行的值的行)

    编辑 为了清楚起见更改了示例 df 我有一个数据框 类似于下面给出的数据框 除了真实的数据框有几千行和列 并且值是浮点数 df pd DataFrame 6 5 4 3 8 6 5 4 3 6 1 1 3 9 5 0 1 2 7 4 2 0
  • WSL2 Docker Linux 卷权限问题

    我正在使用 Docker 构建 Jekyll 网站 我正在使用 Windows 10 和 WSL2 以及 Debian 如果我在 Windows 环境中从 Powershell 运行以下命令 docker run rm label jeky
  • 如何使用 SIGSEGV 信号处理程序调试程序

    我正在为应用程序编写一个插件 有时会抛出 SIGSEGV 然而 应用程序捕获信号 SIGSEGV 换句话说 该插件是一个动态库 该错误发生在我的插件和动态库中 但应用程序处理 sSIGSEGV 并正常退出 因此 对我来说调试并获取所有堆栈帧
  • SQL Server 中的 IGNORE_DUP_KEY 选项

    我在 MSDN 和 Google 上做了很多搜索 但看起来像描述IGNORE DUP KEY选择非常有限 我的困惑 Is IGNORE DUP KEY选项 一个列的选项 为了一张桌子 对于几列 对于索引 使索引唯一 If set IGNOR
  • Android - 如何在录音时添加增益控制

    我为录音机应用程序工作 想添加增益控制 但我不知道该怎么做 我可以访问音频缓冲区 但我不知道如何使声音更大或更慢 我看到另一个应用程序有一个搜索栏 用于从特定范围内选择分贝 aRecorder read buffer 0 buffer le
  • 如何获取套接字的主机名?

    当我从连接的套接字接收到某个事件时 我必须发送一个带有我的主机名和端口作为参数的请求 我希望能够从套接字对象检索此信息 不幸的是 关于这方面的文档很少 我似乎无法找出这是否以及如何可能 那么 是否可以在 Socket io 中执行类似的操作
  • 如何在 中显示文件路径?

    I tried
  • Get-InstalledModule 和 Get-Module -ListAvailable 之间有什么区别?

    据我所知 他们做了同样的事情 那么使用其中一种而不是另一种的原因是什么 抱歉 所以问题规则引擎 不知道还能说什么 Get InstalledModule是其一部分PowerShellGet并将使用列出已安装的模块Install Module
  • Excel IFERROR 的 R 等效项是什么?

    我正在尝试将 IFERROR 条件放入 R 中 就像 Excel IFERROR 函数一样 我正在构建一个随机森林模型 为了进行微调 我使用tuneRF函数 它有助于给出最佳的 mtry 参数 Selecting Optimal MTRY
  • 将 Python 脚本作为 Windows 后台进程运行 [重复]

    这个问题在这里已经有答案了 我一直在尝试编写一个从串行端口读取数据的Python脚本 它在命令行中运行良好 但我需要它作为后台进程运行 而无需任何命令行界面 该脚本有一个 while 循环 它从串行端口读取下一个数据字节并相应地模拟按键 为
  • 使用 ANSI 转义序列获取终端大小?

    在研究这个问题时 在评论中我发现有人提到 ANSI 转义码来获取终端大小 由于我将使用 ANSI 转义序列 我认为这将是一种比获取终端大小更优雅的方法ioctl or getenv 这是一篇关于ioctl https stackoverfl
  • 如何使用 Tailwind 修改 svg 图标颜色

    我正在使用 TailwindCSS 并且想要更改 svg 的颜色 没有 Tailwind 这个问题之前已经被问过here https stackoverflow com questions 22252472 how to change th
  • 来自 AlertDialog 的 findViewById(使用自定义布局)- NullPointerException

    我正在尝试从 AlertDialog 中的 EditTexts 中获取文本 该对话框的创建方式如下所示 问题是 我无法检索文本视图 我得到的只是一个空值 有任何想法吗 final EditText editFirstname EditTex
  • Cassandra 要求允许过滤,即使列是聚集键

    对 Cassandra 非常陌生 如果问题很简单 我们深表歉意 我创建了一个表 create table ApiLog LogId uuid DateCreated timestamp ClientIpAddress varchar pri
  • 强制多个线程在多个 CPU 可用时使用它们

    我正在编写一个 Java 程序 由于其工作性质 该程序使用大量 CPU 然而 其中很多可以并行运行 并且我已经使我的程序成为多线程的 当我运行它时 它似乎只使用一个 CPU 直到它需要更多的 CPU 然后才使用另一个 CPU 我可以在 Ja
  • 无法中断 global.asax / Application_Start

    我在第一行有一个断点Application Start 但 Visual Studio 不会中断它 Visual Studio 已将自身附加到 IIS 工作进程 自动附加到计算机 SRD00510 上的进程 2092 w3wp exe 已成
  • Mysql XML表导出命令行

    也许我在这里没有看到什么 但是为什么这个命令行在 LINUX 命令行上运行时工作得很好并提供结果集 但在 WINDOWS 命令 行上执行时它会失败并没有返回任何内容 mysql hHOSTNAME uroot p xml e SELECT
  • Python:连接多个组件来构建 URL

    我正在尝试通过加入一些动态组件来构建 URL 我想用类似的东西os path join 但对于我来说的 URL 来说 通过研究我发现urlparse urljoin 做同样的事情 然而 看起来一次只需要两个参数 到目前为止 我有以下有效但看