在 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
- 如果i是双句点,则
- 如果 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

