Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでパスを簡素化する


(Unixファイルシステムのように)ファイルの絶対パスがあるとすると、それを単純化する必要があります。つまり、正規のパスに変換する必要があります。 UNIXスタイルのファイルシステムでは、ピリオド「。」は現在のディレクトリを指します。また、2つのピリオド「..」を使用すると、ディレクトリが1つ上のレベル(親ディレクトリ)に移動します。正規パスのプロパティは次のとおりです。

  • パスは常にスラッシュで始まる必要があります/
  • 2つのディレクトリ名の間にスラッシュが1つだけ存在する必要があります。
  • 最後のディレクトリ名(存在する場合)は、末尾に/を付けてはなりません。
  • 正規パスは、絶対パスを表す最短の文字列である必要があります。

したがって、たとえば、指定されたパスが「/ home /」、「/../」および「/ home // user /」である場合、変換されたパスは「/ home」、「/」、および「/home/」になります。ユーザー」

手順を見てみましょう-

  • リストstを取得し、それに「/」を入力します
  • a:=指定されたパスを区切り文字「/」で分割した後の文字列のリスト
  • a
      の各要素iについて
    • iが2倍の期間の場合、
      • stの長さが1より大きい場合は、stから最後の要素を削除します。それ以外の場合は、続行します
    • それ以外の場合、iが単一期間の場合は、続行します
    • 空の文字列でない場合は、stに(‘/’連結i)を挿入します
  • stに要素が1つしかない場合は、「/」を返します
  • 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

  1. 最小コストパスのためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −コストマトリックスと位置(m、n)が与えられているので、(0、0)から(m、n)に到達するための最小コストパスのコストを見つける必要があります。各セルは、あるセルから別のセルに移動するためのコストを表します。 次に、以下の実装のソリューションを見てみましょう- 例 # dynamic approach R = 3 C = 3 def minCost(cost, m, n):    # initialization    tc = [[0 for x in range

  2. Pythonにパスを追加する方法は?

    Pythonは、1991年に最初にリリースされたプログラミング言語です。複数のオペレーティングシステムで使用できるアプリケーションがあり、開発者はその上で新しいコードを記述および開発できます。 Pythonは、開発者と広範なサポートに伴う可能性が非常に大きいため、最も広く使用されているプログラミング言語の1つです。 ユーザーが「python」という単語を入力するたびに 」コマンドプロンプトでエラーが返されます。正しく機能するには、パス全体を指定する必要があります。これは、コマンドプロンプトが出力をロードするために「python.exe」を見つける必要があり、パス全体が指定されていない限り、