修改Python 2中的URL组件

2023-12-29

在 Python 2 中是否有更简洁的方法来修改 URL 的某些部分?

例如

http://foo/bar -> http://foo/yah

目前,我正在这样做:

import urlparse

url = 'http://foo/bar'

# Modify path component of URL from 'bar' to 'yah'
# Use nasty convert-to-list hack due to urlparse.ParseResult being immutable
parts = list(urlparse.urlparse(url))
parts[2] = 'yah'

url = urlparse.urlunparse(parts)

有更清洁的解决方案吗?


不幸的是,该文档已经过时了;产生的结果urlparse.urlparse() (and urlparse.urlsplit()) use a collections.namedtuple()- 生产类 https://docs.python.org/2/library/collections.html#collections.namedtuple作为基地。

不要将此命名元组转换为列表,而是使用为此任务提供的实用程序方法:

parts = urlparse.urlparse(url)
parts = parts._replace(path='yah')

url = parts.geturl()

The namedtuple._replace() method https://docs.python.org/2/library/collections.html#collections.somenamedtuple._replace允许您创建替换特定元素的新副本。这ParseResult.geturl() method https://docs.python.org/2/library/urlparse.html#urlparse.ParseResult.geturl然后将这些部分重新连接到一个 url 中。

Demo:

>>> import urlparse
>>> url = 'http://foo/bar'
>>> parts = urlparse.urlparse(url)
>>> parts = parts._replace(path='yah')
>>> parts.geturl()
'http://foo/yah'

mgilson https://stackoverflow.com/users/748858/mgilson提交了一份错误报告(带补丁) http://bugs.python.org/issue21746以解决文档问题。

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

修改Python 2中的URL组件 的相关文章

随机推荐

  • 运行时按路径加载共享库

    我正在构建一个 Java 应用程序 该应用程序使用用 C 编写并针对不同操作系统进行编译的共享库 问题是 这个共享库本身依赖于它通常在适当的环境变量下找到的附加库 PATH LIBRARY PATH or LD LIBRARY PATH 我
  • 如何撤消剥离 -即将符号添加回剥离的二进制文件

    我有一个剥离的二进制文件和符号文件 是否可以将符号添加回二进制并创建未剥离的二进制 我的用例是使用这个二进制文件和 valgrind 对于那些不支持单独的调试信息文件的工具 您可以将调试部分粘回原始二进制文件 您可以按照这些思路做一些事情
  • 如何在 Angular API 请求的标头中传递 x-api-key? [复制]

    这个问题在这里已经有答案了 我正在尝试发送x api keyheaders中的header如下图 服务 ts import Injectable from angular core import Http Headers RequestOp
  • 安装 APK 时出现 DELETE_FAILED_INTERNAL_ERROR 错误

    I am using Android Studio 2 2 Preview I am facing the issue 失败 安装失败无效的apk 错误 安装 apk 时 我已经在 build gradle 中进行了更改 但无法重新跟踪它
  • ng-grid 支持虚拟滚动吗?

    我想在我的应用程序中使用 Slickgrid 来实现网格功能 但由于我大部分时间都使用 AngularJS 我认为 ng grid 是可行的方法 但不确定它是否支持虚拟滚动 我尝试查看他们的文档和没有找到任何有关虚拟滚动支持的信息 如果可能
  • 如何在一定时间限制后调用另一个活动

    如何为将一项活动调用另一项活动设定时间限制 我想在给定的时间限制内调用另一个活动 例如 将 A 类呼叫到 B 类 我使用了alarmManager 但我的应用程序不可能也使用线程 每当我给出Thread sleep时 它都不会执行操作 直到
  • 为什么使用单例而不是静态方法?

    对于这些有关帮助器 实用程序类的简单问题 我从未找到好的答案 为什么我要创建一个单例 无状态 而不是使用静态方法 如果对象没有状态 为什么还需要对象实例 通常 单例用于引入某种全局状态到一个应用程序 老实说 这种情况经常超出真正必要的范围
  • 函数声明中缺少“虚拟”限定符

    在搜寻一些旧代码时 我遇到了类似于以下内容的内容 class Base public virtual int Func class Derived public Base public int Func Missing virtual qu
  • 使用 Apache CXF 的 JAX-RS 文件上传

    我正在尝试使用 JAX RS 和 TomEE 的 Apache CXF 实现 2 6 14 上传文件 但上传的文件始终为空 这是代码 POST Path upload Consumes MediaType MULTIPART FORM DA
  • 使用 XAML 将故事板完成时元素的可见性设置为折叠

    我有一个故事板动画 它使用不透明度属性使控件淡出视图 完成后 我想将控件的可见性设置为折叠 我也希望能够执行相反的操作 将可见性设置为可见 然后使用故事板将控件淡入视图中 我知道我可以连接事件 但我想在 XAML 中完成这一切 是否可以 你
  • 如何从 git 存储库加载最新的 Clojure 库

    我想使用最新的开发版本clojure data xml 我正在使用 Leiningen 来管理依赖项 但是 存储库中没有 SNAPSHOT 版本Central http search maven org search 7Cgav 7C1 7
  • Common Lisp 双反引号、反引号、引号、反引号序列?

    我正在阅读 Let Over Lambda 它涉及一些非常深入的分层宏创作 这很有趣 我基本上都能跟上它的步伐 在第 4 章中 Hoyte 为 CL PPCRE 匹配和替换功能实现了读取器宏 这样您就可以执行以下操作 m foo bar d
  • 如何围绕 Web Workers API 编写 Promise 包装器?

    我正在编写一个使用 Web Workers 的库 库的使用者不应该看到任何 Web Worker 的内容 而应该从该库的公共方法返回一个 Promise 如下所示 consumer js const api new Api api doCa
  • timer_create() : -1 EAGAIN(资源暂时不可用)

    我在运行 ARM 的嵌入式 Linux 下创建计时器时遇到问题 我正在使用自制的 C 库来管理计时器 我自己没有编写代码 尽管我可以访问源代码 但我并不深入了解其实现 它工作了一段时间 然后我收到错误 EAGAIN 使用 strace 我注
  • 在急切加载中过滤导航属性

    我一直在使用软删除 现在我想加载未 删除 的实体的导航属性 我找到了一种方法 这种方法的问题对我来说并不清晰 还有另一种方法可以做到这一点 Context CreateSet Include Salary Select u gt new U
  • java.util.MissingResourceException:找不到基本名称 javax.servlet.LocalStrings、区域设置 es_ES 的包

    我试图在我的一个 servlet 中执行一些 jUnit 测试 但每当我尝试运行它时 我都会收到 ExceptionInInitializerError 我读到此错误是由于在评估静态初始值设定项或静态变量的初始值设定项期间发生的异常所致 问
  • Adobe Air mobile - 使用 SkinClass 允许滚动时,softKeyboardType 不起作用?

    我正在尝试将 softKeyboardType 设置为电子邮件 但当我使用 SkinClass spark skins mobile TextAreaSkin 时 它不会改变它 但当我脱掉 SkinClass spark skins mob
  • 摘要不适用于 OLS 估计

    我的 statsmodels OLS 估计有问题 该模型运行没有任何问题 但是当我尝试调用摘要以便我可以看到实际结果时 当 a 的形状和权重不同时 我得到需要指定的轴的 TypeError 我的代码如下所示 from future impo
  • iOS 协议/委托混淆?

    这一切都是我的第一篇文章 我会尽力做到尽可能准确 我读过很多关于 iOS 协议 委托实现的文章 但所有示例都失败了 让我们说 我有 A 和 B 控制器 想将数据从 A 发送到 B 啊 protocol exampleprot
  • 修改Python 2中的URL组件

    在 Python 2 中是否有更简洁的方法来修改 URL 的某些部分 例如 http foo bar gt http foo yah 目前 我正在这样做 import urlparse url http foo bar Modify pat