2010-06-09 75 views
1

基本上我已经有了这个当前的url和我想合并成一个新的url的其他关键字,但有三种不同的情况。在Python中操纵目录路径

假设当前网址为localhost:32401/A/B/foo的

如果关键是吧,然后我要回本地主机:32401/A/B /条

如果key开始以斜线是/ A /条,然后我要回本地主机:32401/A /条

最后,如果关键是它自己独立的网址,然后我只想返回键= http://foo.com/bar - >http://foo.com/bar

我假设有至少是前两种情况的一种方法没有手动操作字符串,但没有立即跳出os.path模块。

+0

你试过什么吗? – SilentGhost 2010-06-09 18:36:22

回答

0

我假设有一种方法可以做到至少在前两种情况下无需手动操作字符串,但没有我的os.path中模块中立即跳了出来。

那是因为你想使用urllib.parse(对于Python 3.X)或urlparse(对于Python 2.x的)来代替。

虽然我没有太多的经验,所以这是一个使用str.split()str.join()的片段。

urlparts = url.split('/') 

if key.startswith('http://'): 
    return key 
elif key.startswith('/'): 
    return '/'.join(urlparts[:2], key[1:]) 
else: 
    urlparts[len(urlparts) - 1] = key 
    return '/'.join(urlparts) 
+0

谢谢你们!我基本上是手动做的。我在上面做了改进,但是在else分支中做了最后一个的rfind,然后从那里连接了这个关键字。同样在elif中,我搜索了第一个匹配词的索引,以反对推广索引。 – 2010-06-09 20:22:28

0

Python中的字符串对象都有startwith和endswith方法,应该能够让你到那里。也许这样的事情?

def merge(current, key): 
    if key.startswith('http'): 
    return key 
    if key.startswith('/'): 
    parts = current.partition('/') 
    return '/'.join(parts[0], key) 
    parts = current.rpartition('/') 
    return '/'.join(parts[0], key) 
1

你检查了urlparse模块吗?

从文档,

from urlparse import urljoin 
urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html') 

应该帮助你的第一个案例。

显然,你可以随时对其余的基本字符串进行操作。