在 Python 中简化路径

pythonserver side programmingprogramming更新于 2025/11/22 15:40:17

假设我们有一个文件的绝对路径(如 Unix 文件系统),我们必须简化它。换句话说,我们必须将其转换为规范路径。在 UNIX 风格的文件系统中,句点"."表示当前目录。双句点".."将目录向上移动一级(父目录)。规范路径的属性如下。

  • 路径必须始终以斜杠 / 开头
  • 两个目录名之间只能有一个斜杠 /。
  • 最后一个目录名(如果存在)不能以尾随 / 结尾。
  • 规范路径必须是表示绝对路径的最短字符串。

例如,如果给定的路径是 “/home/”,“/../”和“/home//user/”,则转换后的路径为“/home”、“/”和“/home/user”

让我们看看−的步骤

  • 取一个列表st,并将‘/’放入其中
  • a := 用分隔符‘/’分割给定路径后的字符串列表
  • 对于a中的每个元素i
    • 如果i是双句点,则
      • 如果st的长度> 1,则从 st 中删除最后一个元素,否则继续
    • 否则,如果 i 是单个句点,则继续
    • 否则,如果不是空字符串,则将("/"连接 i)插入 st
  • 如果 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

相关文章


有用资源