在Python中,如何提取路径中的倒数第二个目录名?
In Python, how should one extract the second-last directory name in a path?
我有如下字符串:
/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]
'/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore'.split('/')[-2]
根据/
符号拆分然后打印倒数第二个索引。
>>> x = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
>>> y = x.split('/')
>>> y[-2]
'2.0.24'
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'
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
returns 一个列表,所以使用 join()
.
输出;
>>>
2.0.24
>>>
# print (t)
>>>
['2.', '0.', '2', '4']
>>>
您还可以这样做:
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'
跨平台解决方案:
import os
'your/path'.split(os.path.sep)[-2]
我有如下字符串:
/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]
'/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore'.split('/')[-2]
根据/
符号拆分然后打印倒数第二个索引。
>>> x = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
>>> y = x.split('/')
>>> y[-2]
'2.0.24'
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'
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
returns 一个列表,所以使用 join()
.
输出;
>>>
2.0.24
>>>
# print (t)
>>>
['2.', '0.', '2', '4']
>>>
您还可以这样做:
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'
跨平台解决方案:
import os
'your/path'.split(os.path.sep)[-2]