タイトルの例として、結果が必要です:
方向:home/tom/cat
最初のカット :tom/cat
セカンドカット:/cat
最後のカット:/
Pythonでそれを行う方法は?
タイトルの例として、結果が必要です:
方向:home/tom/cat
最初のカット :tom/cat
セカンドカット:/cat
最後のカット:/
Pythonでそれを行う方法は?
これはあなたが探しているものですか:
In [101]: dir = "home/tom/cat"
In [102]: dir.split('/')
Out[102]: ['home', 'tom', 'cat']
os.path.sep
クロスプラットフォーム対応にするために分割することもできます
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
これはあなたが探しているものですか?文字列がそのように見える(つまり、先頭にスラッシュがない)と仮定すると、ジェネレーターを試すことができます。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
各ステップの出力を取得するために、次のようなものを使用する場合があります。
import os
path = "home/tom/cat"
while path:
base = os.path.basename(path)
path = path.rstrip(base)
print base
「/」で分割するよりも安全な方法:
In [135]: import os
In [136]: dir = '/home/tom/cat'
In [137]: os.path.basename(dir)
Out[137]: 'cat'
これにより、文字列の最初のディレクトリが切り取られます。
dir = 'home/tom/cat'
parts = dir.split('/')
print '/'.join(parts[1:])
文字列をディレクトリの配列に分割し、最初のものを除くすべてを再び結合します。各カットの最初のディレクトリを削除します。
os モジュールを使用して分割および再結合できます。
import os
def cutPath(path):
return os.path.join(os.path.split(path)[1:])