Python程式:查詢解析後的Unix風格路徑


假設我們有一個Unix路徑,在一個字串列表中,我們需要找到它的解析版本。眾所周知,在Unix中,“..”表示上級目錄,“.”表示停留在當前目錄。這裡的解析表示對這兩個符號的評估,以便我們得到當前所在的最終目錄。

所以,如果輸入類似於path = ["usr", "..", "usr", ".", "local", "etc", "foo"],那麼輸出將是['usr', 'local', 'etc', 'foo'],因為該部分表示“/usr/../usr/./local/etc”,解析為“/usr/local/etc/foo”

為了解決這個問題,我們將遵循以下步驟:

  • s := 一個新列表
  • 對於path中的每個元素i,執行以下操作:
    • 如果i與'..'相同,則
      • 如果s不為空,則
        • 從s中刪除最後一個元素
    • 否則,當i與'.'不同時,則
      • 在s的末尾插入i
  • 返回s

讓我們看看下面的實現,以便更好地理解:

示例

 即時演示

class Solution:
   def solve(self, path):
      s = []
      for i in path:
         if i == '..':
            if len(s) >0:
               s.pop()
            elif i !='.':
               s.append(i)
      return s
ob = Solution()
print(ob.solve(["usr", "..", "usr", ".", "local", "etc", "foo"]))

輸入

["usr", "..", "usr", ".", "local", "etc", "foo"]

輸出

['usr', 'local', 'etc', 'foo']

更新於: 2020年10月5日

136 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.