Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 경로 단순화

<시간/>

Unix 파일 시스템과 같은 파일에 대한 절대 경로가 있다고 가정하면 이를 단순화해야 합니다. 즉, 표준 경로로 변환해야 합니다. UNIX 스타일 파일 시스템에서 마침표 '.'는 현재 디렉터리를 나타냅니다. 그리고 이중 마침표 '..'는 디렉토리를 한 단계 위로 이동합니다(상위 디렉토리). 표준 경로의 속성은 다음과 같습니다.

  • 경로는 항상 슬래시로 시작해야 합니다. /
  • 두 디렉토리 이름 사이에는 /가 하나만 있어야 합니다.
  • 마지막 디렉토리 이름(존재하는 경우)은 후행 /로 끝나지 않아야 합니다.
  • 표준 경로는 절대 경로를 나타내는 가장 짧은 문자열이어야 합니다.

예를 들어 주어진 경로가 "/home/", "/../" 및 "/home//user/"이면 변환된 경로는 "/home", "/" 및 "/home/ 사용자”

단계를 살펴보겠습니다 -

  • 목록을 가져 와서 '/'를 넣으십시오.
  • a :=지정된 경로를 구분 기호 '/'로 분할한 후 문자열 목록
    • 의 각 요소 i에 대해
    • i가 이중 마침표이면
      • st의 길이> 1이면 st에서 마지막 요소를 삭제하고, 그렇지 않으면 계속
    • 내가 단일 마침표이면 계속
    • 그렇지 않으면 빈 문자열이 아닌 경우 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