Reputation: 8315
I have a string like the following:
/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore
How should I extract the "2.0.24" from this string? I'm not sure how to split the string using the slashes (in order to extract the second last element of the resultant list) and I'm not sure if this would be a good approach. What I have right now is the following:
"/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore".split("/RootCore")[0].split("AnalysisTop/")[1]
Upvotes: 10
Views: 15938
Reputation: 2712
cross platform solution:
import os
'your/path'.split(os.path.sep)[-2]
Upvotes: 5
Reputation: 22954
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'
Upvotes: -1
Reputation: 15157
You can also do:
import os
x = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
os.path.split(os.path.split(x)[0])[1]
results in
'2.0.24'
Upvotes: 12
Reputation: 4035
import re
str1 = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
t = re.findall("[0-9][.]*",str1)
print ("".join(t))
You can use regex
-findall
method. t
returns a list, so using join()
.
Output;
>>>
2.0.24
>>>
# print (t)
>>>
['2.', '0.', '2', '4']
>>>
Upvotes: -2
Reputation: 174706
Just split according to the /
symbol then print the second index from the last.
>>> x = "/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore"
>>> y = x.split('/')
>>> y[-2]
'2.0.24'
Upvotes: 3
Reputation: 8572
'/cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisTop/2.0.24/RootCore'.split('/')[-2]
Upvotes: 10