2011-06-23 38 views
2

我有一個字符串,我想從中提取某些部分。該字符串的樣子:python:提取字符串的某些部分

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

這是用於延長HGX

我一模一樣捕捉「disp_temp_2」的特定文件的機器上的路徑。問題是我使用strip函數,因爲有很多'/',所以對我無法正常工作。另一個問題是,上述位置將在計算機上始終發生變化。

是否有任何方法可以捕獲最後一個'/'和'。'之間的確切字符串。

我的代碼如下所示:

path = path.split('.') 

..現在我不能分割基於最後一個 '/'。

任何想法如何做到這一點?

感謝

回答

6

使用os.path中模塊:

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

-1:隱而不宣當文件有多個點時不起作用。 – phant0m

+0

取決於用戶想要的內容。上面的代碼會將'foo.tar.gz'變成'foo'。這看起來像是期望的行爲。如果某人在像'my.cool.file.txt'這樣的文件名中有多個點,那麼這個約定就會變得模糊不清,如果沒有特定領域的知識就不能解析。 – jfocht

+0

嗯...這是一個很好的觀點,但是foo.bar.tar.gz呢? – phant0m

1

標準庫都很酷:

>>> 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' 
0

試試這個:

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

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

0

您可以使用分割的另一部分:

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

Python帶有的os.path模塊,它給你處理的路徑和文件名更好的工具:

>>> 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')