我怎么能分开这个:
C:\my_dir\repo\branch
为:
['C:\my_dir', rest_part_of_string]
其中rest_part_of_string
可以是一个字符串,也可以每\
分割一次。我不在乎休息,我只想把前两个元素放在一起。
答案 0 :(得分:0)
使用regular expression(re
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有方法(注意正斜杠而不是反斜杠(或双反斜杠))
# 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
提供的功能应该更好地重新发明轮子。有大量的原语,您可以从中构建自己的路径操作函数。