简化Python中的路径
假设我们有一个文件的绝对路径(例如UnixFilesystem),我们必须对其进行简化。换句话说,我们必须将其转换为规范路径。在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