在Python中,如何在路径中提取倒数第 二个目录名?

问题描述 投票:4回答:6

我有一个像下面这样的字符串:

/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore

我该如何从这个字符串中提取“2.0.24”?我不确定如何使用斜杠拆分字符串(为了提取结果列表的倒数第二个元素),我不确定这是否是一个好方法。我现在拥有以下内容:

"/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore".split("/RootCore")[0].split("AnalysisTop/")[1]
python string path split slash
6个回答
7
投票
'/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore'.split('/')[-2]

7
投票

你也可以这样做:

import os
x = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
os.path.split(os.path.split(x)[0])[1]

结果是

'2.0.24'

4
投票

只需根据/符号进行拆分,然后打印最后一个索引。

>>> x = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
>>> y = x.split('/')
>>> y[-2]
'2.0.24'

0
投票

跨平台解决方案:

import os
'/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore'.split(os.path.sep)[-2]

-1
投票
import re

str1 = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
t = re.findall("[0-9][.]*",str1)
print ("".join(t))

你可以使用regex-findall方法。 t返回一个列表,所以使用join()

输出;

>>> 
2.0.24
>>> 

# print (t)
>>> 
['2.', '0.', '2', '4']
>>> 

-1
投票
path = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
path_dirs = path.split("/")

>>>> path_dirs
>>>> ['', 'cvmfs', 'atlas.cern.ch', 'repo', 'sw', 'ASG', 'AnalysisTop', '2.0.24', 'RootCore']

>>>> print path_dirs[-2]
>>>> '2.0.24'
© www.soinside.com 2019 - 2024. All rights reserved.