首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改url的urlparse.path

更改url的urlparse.path
EN

Stack Overflow用户
提问于 2016-07-24 12:53:34
回答 2查看 4.6K关注 0票数 7

下面是python代码:

代码语言:javascript
复制
url = http://www.phonebook.com.pk/dynamic/search.aspx
path = urlparse(url)
print (path)

>>>ParseResult(scheme='http', netloc='www.phonebook.com.pk', path='/dynamic/search.aspx', params='', query='searchtype=cat&class_id=4520&page=1', fragment='')

print (path.path)
>>>/dynamic/search.aspx

现在,我需要将path.path更改为我的需求。就像"/dynamic/search.aspx“是路径一样,那么我只需要第一个斜杠和最后一个斜杠之间的部分,包括斜杠,即”/Dynamic.aspx“。

我试过这两行,但最终的结果不是我所期望的,这也是我问这个问题的原因,因为我对"urllib.parse“的了解不够。

代码语言:javascript
复制
path = path.path[:path.path.index("/")]
print (path)
>>>Returns nothing.
path = path.path[path.path.index("/"):]
>>>/dynamic/search.aspx (as it was before, no change.)

简而言之,不管path.path结果是什么,我只需要目录名。例如:“动态/搜索/搜索.search”。现在我需要“动态/搜索/”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-24 13:44:22

我试着查看urlparse,找出在您的情况下可能有帮助但没有发现的任何方法,可能会被忽略,但是无论如何,在这个级别上,您可能需要自己创建方法或黑客:

代码语言:javascript
复制
>>> path.path
'/dynamic/search.aspx'

>>> import re
>>> d = re.search(r'/.*/', path.path)
>>> d.group(0)
'/dynamic/'

这只是一个例子,您也可以使用内置方法,如下所示:

代码语言:javascript
复制
>>> i = path.path.index('/', 1)
>>> 
>>> path.path[:i+1]
'/dynamic/'

编辑:

我没有注意到您的最后一个例子,所以这里有另一种方法:

代码语言:javascript
复制
>>> import os
>>> path = os.path.dirname(path.path) + os.sep
>>> path
'/dynamic/'
>>> path = os.path.dirname(s) + os.sep
>>> path
'dynamic/search/'

或使用re

代码语言:javascript
复制
>>> s
'dynamic/search/search.aspx'
>>> d = re.search(r'.*/', s)
>>> d
<_sre.SRE_Match object; span=(0, 15), match='dynamic/search/'>
>>> d.group(0)
'dynamic/search/'
>>> 
>>> s = '/dynamic/search.aspx'
>>> d = re.search(r'.*/', s)
>>> d.group(0)
'/dynamic/'
票数 1
EN

Stack Overflow用户

发布于 2019-03-24 18:29:01

首先,可以使用返回最近一次发生的索引的path来获得所需的部分。+ 1用于保持尾随斜杠。

代码语言:javascript
复制
desired_path = path.path[:path.path.rfind("/") + 1]

其次,使用_replace方法替换urlparse对象的path属性,如下所示:

代码语言:javascript
复制
desired_url = urlunparse(path._replace(path=desired_path))

完整的工作示例:

代码语言:javascript
复制
from urllib.parse import urlparse, urlunparse

url = "http://www.phonebook.com.pk/dynamic/search/search.aspx"
path = urlparse(url)

desired_path = path.path[:path.path.rfind("/") + 1]
desired_url = urlunparse(path._replace(path=desired_path))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38552253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档