2010-06-09 74 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') 

應該幫助你的第一個案例。

顯然,你可以隨時對其餘的基本字符串進行操作。