1

タイトルの例として、結果が必要です:

方向:home/tom/cat

最初のカット :tom/cat

セカンドカット:/cat

最後のカット:/

Pythonでそれを行う方法は?

4

8 に答える 8

2

これはあなたが探しているものですか:

In [101]: dir = "home/tom/cat"

In [102]: dir.split('/')
Out[102]: ['home', 'tom', 'cat']

os.path.sepクロスプラットフォーム対応にするために分割することもできます

于 2012-12-06T18:00:49.850 に答える
1
import os

def split_path(s):
    while os.sep in s:
        rv, s = s.split(os.sep, 1)
        yield s

for split in split_path("home/tom/cat"):
    print split

# prints
tom/cat
cat
于 2012-12-19T14:45:43.743 に答える
1

これはあなたが探しているものですか?文字列がそのように見える(つまり、先頭にスラッシュがない)と仮定すると、ジェネレーターを試すことができます。tom/cat最初のパスが返される理由がわからなかったのに、2番目のパスが返される/cat(スラッシュが前にある)ため、これは上記の出力と一致しないことに注意してください。これを変更して、ループが完了し/たときに「デフォルト」(など)を生成することができます。while文字列に先頭が含まれる場合は/、分割から空の要素を取り除くことで調整できます。

In [1]: def PathSplit(s):
   ...:     split_len = len(s.split('/'))
   ...:     yield s
   ...:     if split_len > 1:
   ...:         while split_len > 1:
   ...:             splitter = s.split('/', 1)[1]
   ...:             yield splitter
   ...:             s = splitter
   ...:             split_len = len(s.split('/'))
   ...:
   ...:

In [2]: for i in PathSplit('home/tom/cat'):
   ...:     print i
   ...:
   ...:
home/tom/cat
tom/cat
cat

In [3]: for i in PathSplit('home/tom/cat/another/long/dir'):
   ...:     print i
   ...:
   ...:
home/tom/cat/another/long/dir
tom/cat/another/long/dir
cat/another/long/dir
another/long/dir
long/dir
dir
于 2012-12-06T18:57:49.740 に答える
0

各ステップの出力を取得するために、次のようなものを使用する場合があります。

import os

path = "home/tom/cat"
while path:
    base = os.path.basename(path)
    path = path.rstrip(base)

    print base
于 2012-12-06T18:12:34.997 に答える
0

「/」で分割するよりも安全な方法:

In [135]: import os

In [136]: dir = '/home/tom/cat'

In [137]: os.path.basename(dir)
Out[137]: 'cat'
于 2012-12-06T18:04:01.180 に答える
0

これにより、文字列の最初のディレクトリが切り取られます。

dir = 'home/tom/cat'
parts = dir.split('/')
print '/'.join(parts[1:])

文字列をディレクトリの配列に分割し、最初のものを除くすべてを再び結合します。各カットの最初のディレクトリを削除します。

于 2012-12-06T18:04:26.463 に答える
0

os モジュールを使用して分割および再結合できます。

import os

def cutPath(path):
    return os.path.join(os.path.split(path)[1:])
于 2012-12-06T18:04:27.583 に答える