2011-06-23 41 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')