Python中的拆分路径

时间:2015-08-03 12:56:53

标签: python path split

我怎么能分开这个:

C:\my_dir\repo\branch

为:

['C:\my_dir', rest_part_of_string]

其中rest_part_of_string可以是一个字符串,也可以每\分割一次。我不在乎休息,我只想把前两个元素放在一起。

4 个答案:

答案 0 :(得分:0)

使用regular expressionre module documentation):

>>> import re
>>> print(re.match(r'[^\\]+\\[^\\]+', r'C:\my_dir\repo\branch').group())
C:\my_dir

>>> re.findall(r'[^\\]+\\[^\\]+|.+', r'C:\my_dir\repo\branch')
['C:\\my_dir', '\\repo\\branch']

答案 1 :(得分:0)

python 3.4有方法(注意正斜杠而不是反斜杠(或双反斜杠))

pathlib documentation

# python 3.4
from pathlib import Path

p  = Path('C:/my_dir/repo/branch')

print(p.parent)
print(p.name)

您需要的parts很有意思:

print(p.parts)
# -> ('C:', 'my_dir', 'repo', 'branch')
print('\\'.join(p.parts[:2]), ' -- ', '\\'.join( p.parts[2:])) 
# -> C:\my_dir  --  repo\branch

在python 2.7中,这需要更多的工作:

import os

p = 'C:/my_dir/repo/branch'

def split_path(path):
    parts = []
    while 1:
        path, folder = os.path.split(path)
        if folder:
            parts.append(folder)
        else:
            if path:
                parts.append(path)
            break
    parts.reverse()
    return parts

parts = split_path(p)
print('\\'.join(parts[:2]), ' -- ', '\\'.join(parts[2:]))
# -> C:\my_dir  --  repo\branch

答案 2 :(得分:0)

您可以在\上拆分路径并根据索引重新加入:

>>>my_path = r'C:\my_dir\repo\branch'
>>>split_path = ["\\".join(my_path.split("\\")[:2]), "\\".join(my_path.split("\\")[2:])]
['C:\\my_dir', 'repo\\branch']

>>> first, last = "\\".join(x.split("\\")[:2]), "\\".join(x.split("\\")[2:])
>>> print first, last
C:\my_dir repo\branch

答案 3 :(得分:0)

您需要递归或迭代应用os.path.dirname()(或os.path.split),直到您无法进一步进入目录层次结构。

一般而言,由于更好的跨平台支持,os.path提供的功能应该更好地重新发明轮子。有大量的原语,您可以从中构建自己的路径操作函数。