在url的中间添加一个字符串

问题描述:

这可能是一个简单的问题,但我无法解决它。在url的中间添加一个字符串

我有一个网址:"www.example.com/links"

我想在URL之间添加/skip_session/id=%s/,使其变成:

www.example.com/skip_session/id=%s/links 

可有一个人帮我在这?

我尝试使用

url[23:]+ "/skip_session/id=%s/" + url[:52] 

但它给你既然要前缀对URL的路径部分字符串,你可以在Python 2使用urllib.parse moduleurlparse错误

+0

有你自己尝试过什么了吗?你遇到什么问题? –

+0

@theflash我相信错误是索引超出范围,因为url本身,没有额外的字符串,只有20个字符长,而你正在做'url [23:]' – thiruvenkadam

+0

@thiruvenkadam对不起,这只是一个虚拟的例子显示..我使用一些其他的网址,它有23个字符。 –

),首先将网址分为多个部分:

try: 
    # Python 3 
    from urllib.parse import urlparse 
except ImportError: 
    # Python 2 
    from urlparse import urlparse 

def insert_path_prefix(url, prefix): 
    parts = urlparse(url) 
    updated = parts._replace(path=prefix + parts.path) 
    return updated.geturl() 

url = insert_path_prefix(url, '/skip_session/id=%s') 

考虑到这一点,需要t您的网址是否正确形成帽(有,至少,//开始,最好有像http://完全成形方案)的分析正确挑选出的主机名:

>>> insert_path_prefix('http://www.example.com/links', '/skip_session/id=%s') 
'http://www.example.com/skip_session/id=%s/links' 

如果您的网址缺少//部分在开始时,首先添加一个。

您可以使用字符串替换或字符串rsplit做任务

url_string = "www.example.com/links" 
parsed_url = url_string.rsplit("/", 1) 
new_url = "/skip_session/id=%s/".join(parsed_url) 

或者这样:

url_string = "www.example.com/links" 
new_url = url_string.replace("/links", "/skip_session/id=%s/links") 
+0

同样,这里假设URL中只有一个这样的斜杠。 –

+0

我的看法是,OP希望在API的最后部分之前添加字符串,而不是作为前置:-)就像有'example.com/a/b/d'并且需要将其转换为示例.com/a/b/c/d' – thiruvenkadam

+0

这远非确定;我已经提示OP向问题添加更多细节。 –