2015-10-25 175 views
-4

我有一個.txt文件,其中包含大量文檔。每個文件開始:正則表達式Python「如果數字後跟字母字符」

       11 of 500 DOCUMENTS 

數字顯然不同。數字前31個空格(如果有的話)。 不幸的是,我與正則表達式很可怕。我怎樣才能用正則表達式分割這些文件?

+0

這應該是什麼輸出?你想把文件分成500個文件嗎? – saulspatz

+0

我有一個python腳本可以對文本進行一些分析,但是,我需要一次執行一個文檔,而不是整個批次。 – Zlo

+0

我不明白程序應該做什麼來準備文檔進行分析。它應該將文本分成500段,檢索指定的段或什麼?您遇到麻煩的功能所需的輸入和輸出是什麼? – saulspatz

回答

0

假設您想提取文檔數量,這應該與匹配一個或多個數字\d+和使用saving groups一樣簡單。例如:

In [1]: import re 

In [2]: s = "        11 of 500 DOCUMENTS" 

In [3]: match = re.search(r"(\d+) of (\d+) DOCUMENTS", s) 
In [4]: match.group(1) 
Out[4]: '11' 

In [4]: match.group(2) 
Out[4]: '500' 
0

我不認爲你需要這樣的regexes。好像你可以用

line.startswith(31*' ') 

承認該線很輕鬆地或

line.endswith('of 500 DOCUMENTS\n') 

或兩個,如果你是一個皮帶和吊帶的人。假設沒有任何問題讀取文件的一行的時間,你就不能沿着

document = [] 
for line in open('500docs.txt'): 
    if line.startswith(31*' '): 
     if document: 
      analyze(document) 
      document = [] 
     else: 
      document.append(line) 

線的東西這不處理文件中的最後一個文件,所以你需要一個analyze(document)外循環也。

這是否適合你,你覺得呢?

相關問題