Python路径简化
假设我们有一个文件的绝对路径(类似于Unix文件系统),我们需要对其进行简化。或者换句话说,我们需要将其转换为规范路径。在UNIX风格的文件系统中,句点“.” 指的是当前目录。双句点“..”则向上移动一个目录级别(父目录)。规范路径的属性如下。
- 路径必须始终以斜杠 / 开头。
- 两个目录名之间只能有一个斜杠 /。
- 最后一个目录名(如果存在)不能以尾部斜杠 / 结尾。
- 规范路径必须是表示绝对路径的最短字符串。
例如,如果给定的路径是“/home/”、“/../”和“/home//user/”,则转换后的路径分别是“/home”、“/”和“/home/user”。
让我们看看步骤:
- 创建一个列表 st,并在其中放入 ‘/’
- a := 使用分隔符 ‘/’ 分割给定路径后得到的字符串列表
- 对列表a中的每个元素i:
- 如果i是双句点,则:
- 如果st的长度 > 1,则从st中删除最后一个元素;否则继续。
- 否则,如果i是单句点,则继续。
- 否则,如果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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP