2013-05-29 68 views
0

我想用文件名中的特定字符拆分文件名。例如:按文件名拆分文件名

FileName = MyFile_1.1_A.txt 
(File, ext) = os.path.splitext(FileName) 
print File 

這會給的輸出:

MyFile_1.1_A 

不過,我想獲得的輸出:

MyFile_1.1 

我怎樣才能做到這一點?

+0

如果文件名是「MyFile_1.1_A.2_B.txt」,該怎麼辦?你會期望'MyFile_1.1_A.2','MyFile_1.1'還是別的嗎? – redbmk

回答

4

如果文件格式是標準的,可以使用rsplit

print FileName.rsplit('_', 1)[0] 
1
>>> fn='MyFile_1.1_A.txt' 
>>> re.split(r'_[^_]*$',fn) 
['MyFile_1.1', ''] 
>>> fn='file_name_with_many_under_scores_1.1_.txt' 
>>> re.split(r'_[^_]*$',fn) 
['file_name_with_many_under_scores_1.1', ''] 
1

怎麼樣:

FileName = 'MyFile_1.1_A.txt' 
File = '_'.join(FileName.rsplit('_')[:-1]) 
print File 

例如,這也處理另一起案件:

In [1]: FileName = 'MyFile_ohyeah_1.1_A.txt' 

In [2]: File = '_'.join(FileName.rsplit('_')[:-1]) 

In [3]: File 
Out[3]: 'MyFile_ohyeah_1.1' 
+1

您可以對rsplit的分割數量使用限制。爲什麼要經歷再次加入的麻煩? – karthikr

+0

@ karthikr,我不知道。你的答案是優越的。其優越性不高於 –

+0

。它的正確意識:)你幾乎在那裏。 – karthikr

4

Anoth er變體

FileName.rpartition('_')[0] 
+0

這是最好的回答恕我直言。 +1 – dawg