作为标题的例子,我想要结果:
导演:home/tom/cat
首先剪切:tom/cat
第二次切入:/cat
上次剪辑:/
如何在python中完成?
答案 0 :(得分:1)
这就是你要找的东西:
In [101]: dir = "home/tom/cat"
In [102]: dir.split('/')
Out[102]: ['home', 'tom', 'cat']
您可能还希望在os.path.sep
上拆分为跨平台兼容
答案 1 :(得分:1)
这是你要找的吗?假设您的字符串看起来像那样(即没有前导斜杠),您可以尝试生成器。请注意,这与上面的输出不匹配,因为我不确定为什么第一个传递将返回tom/cat
,但第二个传递将返回/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
答案 2 :(得分: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
答案 3 :(得分:0)
更安全的方式,而不仅仅是分裂'/':
In [135]: import os
In [136]: dir = '/home/tom/cat'
In [137]: os.path.basename(dir)
Out[137]: 'cat'
答案 4 :(得分:0)
这会切断字符串中的第一个目录:
dir = 'home/tom/cat'
parts = dir.split('/')
print '/'.join(parts[1:])
它将字符串拆分为dirs数组,然后再将所有第一个连接在一起。删除每个剪切上的第一个目录。
答案 5 :(得分:0)
您可以拆分并重新加入os模块:
import os
def cutPath(path):
return os.path.join(os.path.split(path)[1:])
答案 6 :(得分:0)
我可能会使用这样的东西来获取每一步的输出:
import os
path = "home/tom/cat"
while path:
base = os.path.basename(path)
path = path.rstrip(base)
print base
答案 7 :(得分:0)
这是一个我在其他地方没见过的干净答案:
>>> mypath="first/second/third/fourth/fifth.txt"
>>> mypath.split('/',1)
['first', 'second/third/fourth/fifth.txt']
>>> mypath.split('/',1)[1]
'second/third/fourth/fifth.txt'
Split可以在第一次拆分时拆分字符串。