简化Python中的路径

假设我们有一个文件的绝对路径(例如Unix File system),我们必须对其进行简化。换句话说,我们必须将其转换为规范路径。在UNIX样式的文件系统中,句点“。” 指当前目录。双句点“ ..”会将目录上移(父目录)。规范路径的属性如下。

  • 路径必须始终以斜杠/

  • 两个目录名称之间只能有一个斜杠/。

  • 姓氏目录名(如果存在的话)不能以/结尾。

  • 规范路径必须是表示绝对路径的最短字符串。

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

让我们看看步骤-

  • 取一个列表st,并在其中加上'/'

  • a:=用定界符'/'分隔给定路径后的字符串列表

  • 对于一个中的每个元素

    • 如果st的长度> 1,则从st中删除最后一个元素,否则继续

    • 如果我是双倍期,那么

    • 否则,如果我是单身,则继续

    • 否则,如果不是空字符串,则将('/'连接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