user741592
user741592

Reputation: 925

python:extract certain part of string

I have a string from which I would like to extract certain part. The string looks like :

 E:/test/my_code/content/dir/disp_temp_2.hgx

This is a path on a machine for a specific file with extension hgx

I would exactly like to capture "disp_temp_2". The problem is that I used strip function, does not work for me correctly as there are many '/'. Another problem is that, that the above location will change always on the computer.

Is there any method so that I can capture the exact string between the last '/' and '.'

My code looks like:

path = path.split('.')

.. now I cannot split based on the last '/'.

Any ideas how to do this?

Thanks

Upvotes: 2

Views: 935

Answers (6)

Roman Bodnarchuk
Roman Bodnarchuk

Reputation: 29747

Standard libs are cool:

>>> from os import path
>>> f = "E:/test/my_code/content/dir/disp_temp_2.hgx"
>>> path.split(f)[1].rsplit('.', 1)[0]
'disp_temp_2'

Upvotes: 1

bgporter
bgporter

Reputation: 36564

Python comes with the os.path module, which gives you much better tools for handling paths and filenames:

>>> import os.path
>>> p = "E:/test/my_code/content/dir/disp_temp_2.hgx"
>>> head, tail = os.path.split(p)
>>> tail
'disp_temp_2.hgx'
>>> os.path.splitext(tail)
('disp_temp_2', '.hgx')

Upvotes: 3

JMax
JMax

Reputation: 26601

You can use the split on the other part :

path = path.split('/')[-1].split('.')[0]

Upvotes: 0

dave
dave

Reputation: 12806

path = path.split('/')[-1].split('.')[0] works.

Upvotes: 0

Sahas
Sahas

Reputation: 11419

Try this:

path=path.rsplit('/',1)[1].split('.')[0]

Upvotes: 0

jfocht
jfocht

Reputation: 1754

Use the os.path module:

import os.path
filename = "E:/test/my_code/content/dir/disp_temp_2.hgx"
name = os.path.basename(filename).split('.')[0]

Upvotes: 6

Related Questions