class Solution(object):
def simplifyPath(self, path):
"""
:type path: str
:rtype: str
"""
# 依照规则写条件代码
path_list = path.split('/') # 将路径以‘/’为分隔符分为列表格式,作为一个一个的操作符
res = []
res.append('/') # 起始是根目录
for i in path_list:
if i == '..': # 如果是退一层目录,就pop res中保存的目录
if len(res) > 1: # 如果有目录可退,则需保证退一层目录之后,res中的路径是正确的
if res[-1] == '/':
res.pop()
res.pop()
else:
res.pop()
if len(res) == 0:
res = ['/']
else: # 如果res中只有根目录,退无可退,就不变
continue
elif i == '/' or i == '.' or i == '': # 如果是多余的分隔符或是什么保持当前目录就跳过
continue
else: # 如果是目录名则添加到res中,需保证添加的目录是正确的路径
if res[-1] == '/':
res.append(i)
else:
res.append('/')
res.append(i)
if res[-1] == '/' and len(res) > 1: # 如果最后有多余的'/',就删掉
res = res[:-1]
return ''.join(res)