Python 第一次出现后在分隔符处拆分字符串

Python 第一次出现后在分隔符处拆分字符串,python,split,Python,Split,我有一个表示路径的字符串: '../../../folder.123/../..' 我的目标是像这样将字符串一分为二: ('../../../folder.123','/../..') 换句话说,给定子字符串的第一次出现,在第一个可用分隔符处拆分(在本例中为/) 我想到的算法是: 根据os.path.sep拆分字符串 查找与子字符串(“.”即)匹配的第一个列表元素的索引 在两个变量中连接令牌列表的元素,直到找到索引为止 但是看起来它对一个分割字符串的pythonic函数有太多的工作。。。

我有一个表示路径的字符串:

'../../../folder.123/../..'
我的目标是像这样将字符串一分为二:

('../../../folder.123','/../..')
换句话说,给定子字符串的第一次出现,在第一个可用分隔符处拆分(在本例中为
/

我想到的算法是:

  • 根据os.path.sep拆分字符串
  • 查找与子字符串(“.”即)匹配的第一个列表元素的索引
  • 在两个变量中连接令牌列表的元素,直到找到索引为止

但是看起来它对一个分割字符串的pythonic函数有太多的工作。。。是否有我缺少的内置函数或某种条件切片可用于实现目标?

如果我正确理解您的问题,这是否有效:

substr = 'folder.123'
location = '../../../folder.123/../..'

separated = location.split(substr, 1)
separated[0] += substr
这使得:

['../../../folder.123', '/../..']

如果我正确理解了你的问题,这是否有效:

substr = 'folder.123'
location = '../../../folder.123/../..'

separated = location.split(substr, 1)
separated[0] += substr
这使得:

['../../../folder.123', '/../..']

您可以尝试对此作业使用正则表达式

请注意,这是一个基于您唯一示例的非常特定(同时也是通用)的正则表达式

重新导入
_REGEX=re.compile('^((\.\.?)?\/)*[^\/]*)(\/?(\.\.?)*)$)
def分割路径(路径):
结构=_REGEX.match(路径或“”).groups()
返回结构[0],结构[3]
测试
>>拆分路径('../../../folder.123/../../
('../../../folder.123','/../../....')
>>>拆分路径('../../../folder.123')
('../../../folder.123','')
>>>拆分路径('folder.123')
('folder.123','')
>>>拆分路径(“/”)
('/', '')
>>>分割路径(“”)
('', '')

您可以尝试为此作业使用正则表达式

请注意,这是一个基于您唯一示例的非常特定(同时也是通用)的正则表达式

重新导入
_REGEX=re.compile('^((\.\.?)?\/)*[^\/]*)(\/?(\.\.?)*)$)
def分割路径(路径):
结构=_REGEX.match(路径或“”).groups()
返回结构[0],结构[3]
测试
>>拆分路径('../../../folder.123/../../
('../../../folder.123','/../../....')
>>>拆分路径('../../../folder.123')
('../../../folder.123','')
>>>拆分路径('folder.123')
('folder.123','')
>>>拆分路径(“/”)
('/', '')
>>>分割路径(“”)
('', '')
似乎正是您想要的:

str
分区
(sep)

在sep的第一次出现处拆分字符串,并返回一个包含分隔符前面的部分的3元组,即分隔符 本身,以及分离器后的零件。如果分隔符不可用 找到后,返回一个包含字符串本身的3元组,后跟两个 空字符串

似乎就是你要找的:

str
分区
(sep)

在sep的第一次出现处拆分字符串,并返回一个包含分隔符前面的部分的3元组,即分隔符 本身,以及分离器后的零件。如果分隔符不可用 找到后,返回一个包含字符串本身的3元组,后跟两个 空字符串


您的字符串总是以这种形式出现
。/SOMETHING.ELSE/。
?您尝试过重新拆分吗?您的字符串总是以这种形式出现
。/SOMETHING.ELSE/。
?您尝试过重新拆分吗?