2010-11-13 118 views
0

我需要從網址剝去../something/如何在Python中處理'../'?

例如: ../first/ from ../first/bit/of/the/url.html其中first可以是任何東西。

實現此目標的最佳方法是什麼?

謝謝:)

+2

你是在談論一個路徑或URL? – 2010-11-13 14:08:38

+0

你的意思是說''第一個''可以是你事先知道的其他東西,或者是你預先不知道的某個目錄名? – EOL 2010-11-13 14:24:46

回答

5

您只需在官方路徑分隔符分割的路徑兩次os.sep,而不是 '/'),並採取最後一位:

>>> s = "../first/bit/of/the/path.html" 
>>> s.split(os.sep, 2)[-1] 
'bit/of/the/path.html' 

這也是比完全分割路徑並將其串回到一起更有效。

請注意,如果路徑包含少於3個以上的路徑元素(例如,'file.html'產生'file.html'),則此代碼不會投訴。如果你想要的代碼引發異常如果路徑是預期的形狀無關,你可以要求它的第三個元素(這是不存在的過短路徑):

>>> s.split(os.sep, 2)[2] 

這可以幫助檢測一些細微的錯誤。

+1

刪除我的解決方案,你的顯然更好。 – 2010-11-13 14:39:37

1

EOL給了一個非常乾淨的方法,但是我忍不住給一個正則表達式替代吧:)

>>> import re 
>>> m=re.search('^(\.{2}\/\w+/)(.*)$','../first/bit/of/the/path.html') 
>>> m.group(1) 
'../first/'