2017-07-06 76 views
1

我有像這些名稱一堆JPG文件:正則表達式中的python基於匹配的文件名的開始和結束組文件

1_fileid1_1.jpg 
2_fileid1_1.jpg 
1_fileid1_2.jpg 
2_fileid1_2.jpg 
... 
1_fileidn_m.jpg 
2_fileidn_m+1.jpg 

第一個數字是從2份所以第1部分的序列具有ID fileid1的文件以1_開頭,部分2以2_開頭。最後一個數字是頁面,因爲這些是從文檔創建的圖像文件,因此_1是第1頁,_2是第2頁等等。頁面可以是任何數字,但每個頁面的部分總是隻有2。

現在我想讀取這些文件,以便我們可以將它們按照可能在元組或列表中的順序進行分組,以便序列看上去像這樣。

seq1 = (1_fileid1_1.jpg, 2_fileid1_1.jpg) 
seq2 = (1_fileid1_2.jpg, 2_fileid1_2.jpg) 
... 
seqx = (1_fileidn_m.jpg, 2_fileidn_m.jpg) 

每個文件的每一頁都是不同的順序。

有沒有一種簡單的方法來做到這一點在python中?也許使用re.match?但是,如何確保一個序列中的兩個文件具有相同的結尾,即_1.jpg(包括.jpg是有用的,因爲如果有的話,我可以避開其他類型的文件)。

編輯: 如果文件位於不同的行上,Rizman的解決方案可以正常工作。如果這些文件的名字全部放在一起並與文件的路徑一起,會怎樣?就像這樣:

../path/to/file1/1_file1_1.jpg/path/to_file2/2_file1_1.jpg... 

我試圖修改RIZWAN的解決方案是這樣的:https://regex101.com/r/HvzkwL/5/

但它不工作。

回答

1

更新按在運的職位變化:此

(.*?/\d+(_.*?\.jpg))(.*?/)(\d+)\2 

並替換:

\($1,$3$4$2\) 

Updated Demo

使用本你可以試試這個方法:

(\d+(_[^\.]+\.jpg))\n(\d+)\2 

並以此取代:

($1,$3$2) 

Regex101Demo

+0

謝謝你的答案,這是真的很有幫助。不幸的是,我仍然遇到了具體的實施問題。你可以看看我的編輯上面,看看你是否可以弄明白?謝謝 – Atirag

+1

@Atirag PLZ現在檢查,我根據你的問題的變化更新了答案,順便說它是Rizwan :) –

+0

工程很棒!非常感謝你Rizwan :) – Atirag

相關問題