Python路徑簡化
假設我們有一個檔案的絕對路徑(類似於Unix檔案系統),我們需要對其進行簡化。或者換句話說,我們需要將其轉換為規範路徑。在UNIX風格的檔案系統中,句點“.” 指的是當前目錄。雙句點“..”則向上移動一個目錄級別(父目錄)。規範路徑的屬性如下。
- 路徑必須始終以斜槓 / 開頭。
- 兩個目錄名之間只能有一個斜槓 /。
- 最後一個目錄名(如果存在)不能以尾部斜槓 / 結尾。
- 規範路徑必須是表示絕對路徑的最短字串。
例如,如果給定的路徑是“/home/”、“/../”和“/home//user/”,則轉換後的路徑分別是“/home”、“/”和“/home/user”。
讓我們看看步驟:
- 建立一個列表 st,並在其中放入 ‘/’
- a := 使用分隔符 ‘/’ 分割給定路徑後得到的字串列表
- 對列表a中的每個元素i:
- 如果i是雙句點,則:
- 如果st的長度 > 1,則從st中刪除最後一個元素;否則繼續。
- 否則,如果i是單句點,則繼續。
- 否則,如果i不是空字串,則將 (‘/’ 與 i 連線) 插入到 st 中。
- 如果i是雙句點,則:
- 如果st只有一個元素,則返回 ‘/’
- 連線st中所有元素後返回結果。
讓我們看看下面的實現,以便更好地理解:
示例
class Solution:
def simplifyPath(self, a):
st = ['/']
a = a.split("/")
for i in a:
if i == '..':
if len(st) > 1:
st.pop()
else:
continue
elif i == '.':
continue
elif i != '':
st.append("/" + str(i))
if len(st) == 1:
return "/"
return "".join(st[1:])
ob1 = Solution()
print(ob1.simplifyPath("/home/"))
print(ob1.simplifyPath("/../"))
print(ob1.simplifyPath("/home//user/"))輸入
"/home/" "/../" "/home//user/"
輸出
/home / /home/user
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP