2016-01-21 111 views
0

我需要根據每個段落中使用的文件名按字母順序對段落進行排序。這裏是如何的樣子(有大約200段像這樣在一個文本文件)的例子:使用Python按字母順序對文本文件中的段落進行排序

------------------------------------------------------------------ 
L:hwqw\se\hf8594.txt 

File Creation Date:   September 07, 2004 
Identifier #:     hf8594.tif 
Image Pixels (meters):   1.25 
Format:      8 bit TIFF 

------------------------------------------------------------------ 
L:hhtk\ha8421.txt 

File Creation Date:   September 07, 2004 
Identifier #:     ha8421.tif 
Image Pixels (meters):   1.25 
Format:      8 bit TIFF 

現在我需要根據Identifier #(標識段落排序具有相同的名稱作爲文本文件在頂部,但文本文件在不同的子文件夾中,所以我認爲使用標識符會更好)。

+1

以及我不知道如何開始,因爲我是Python初學者 – MetalMuzu

+1

是的,在我看來,初學者問題沒有錯。 –

回答

3

拆分段落字符串以獲取列表中的每個段落。

這可以使用

paragraph_sep = "------------------------------------------------------------------\n" 
paragraphs = paragraph_str.split(paragraph_sep)[1:] 

提取從每個段落項目標識符來實現。

這可以通過使用regular expressions

import re 
s = 'Identifier #:     hf8594.tif' 
comp = re.compile("Identifier #: \s* (.*tif)") 
a = re.search(comp, s) 
a.groups() 
=> ('hf8594.tif',) 

排序的段落列出了與該標識符來完成。

請注意,您可以輕鬆地通過函數將按鍵設置爲排序功能。

comp = re.compile("Identifier #: \s* (.*tif)") 
def get_id_from_string(s): 
    ids = re.search(comp, s) 
    return ids[0] 
paragraphs.sort(key=get_id_from_string) 

重建串

隨着sep.join(paragraphs)

您現在有不同的步驟,希望這有助於。

+0

它的工作原理。謝謝。 – MetalMuzu