2011-07-12 105 views
2

我目前正在研究一個涉及拆分url的項目。我已經使用urlparse模塊來分解url,所以現在我只使用路徑段。將網址分割到python列表中

問題是,當我嘗試根據分隔符「/」拆分()字符串來分隔目錄時,我最終得到了列表中的空字符串。

例如,當我做到以下幾點:

import urlparse 
url = "http://example/url/being/used/to/show/problem" 
parsed = urlparse.urlparse(url) 
path = parsed[2] #this is the path element 

pathlist = path.split("/") 

我得到的名單:

['', 'url', 'being', 'used', 'to', 'show', 'problem'] 

我不希望這些空字符串。我意識到我可以通過在沒有它們的情況下製作新的列表來刪除它們,但這看起來很sl。。有沒有更好的方法來刪除空的字符串和斜線?

+0

urlparse模塊? –

回答

3

我不熟悉的urllib及其路徑輸出,但認爲一個方式,形成新的列表,你可以使用列表中理解方式如下:

[x for x in path.split("/") if x] 

或者是這樣的,如果只是「/」開頭:

path.lstrip('/').split("/") 

否則,如果尾隨太:

path.strip('/').split("/") 

而且至少在您在路徑字符串總是從單一的「/」不是最簡單的方法是開始:

path[1:].split('/') 
4

我不希望這些空字符串。我意識到我可以通過在沒有它們的情況下製作新的列表來刪除它們,但這看起來很sl。。有沒有更好的方法來刪除空的字符串和斜線?

什麼?根據定義,只有一個空字符串,它總是第一個。

pathlist = path.split("/")[1:] 

很常見。


尾部斜線可以表示「空」文件名。在這種情況下,可能暗示默認名稱(例如index.html)

這可能是有意義的。

"http://example/url/being/used/to/show/problem" 

的文件名是「問題」

"http://example/url/being/used/to/show/problem/" 

目錄是「問題」和默認的文件名由空字符串暗示。

+0

如果網址最後有一個斜槓,則會出現另一個空字符串。 – chindes

+0

然後可能使用列表comp? 'path_list = [(p)for path.split('/')if len(p)]' – craigs

+0

@craigs:這不是任意的。這只是第一個位置。最後的位置可能是有意義的。簡單地抑制路徑元素是錯誤的。 –

1

刪除空項目?

pathlist.remove('') 
2
pathlist = paths.strip('/').split("/") 
1

我說這是一個評論評論,所以以防萬一: 你不能用一個列表理解爲排除從split返回空的元素,即

path_list = [(p) for p in path.split('/') if len(p)]