2012-11-29 105 views
1

我有一個文本文件,其中某些記錄具有相似的字段。在Python中拆分文本文件

name: 
    Class: 
    Subject: 
    name: 
    Class: 
    Subject: 

如上所述,這個文件可以有任意數量的記錄,我想用各自的字段分隔每個記錄。 以下是我可以達到多遠,以解決這個問題。

def counter(file_path): 
     count = 0 
     file_to_read = open(file_path) 
     text_to_read = file_to_read.readlines() 
     file_to_read.close() 
     for line in text_to_read: 
      if line.find('name') != -1: 
       count = count + 1 
     return count 

這樣我可以算不算。的記錄存在於文件中,現在我發現很難將整個文本文件分割爲等於no的段。的記錄。

在此先感謝

+0

是否所有記錄需要3條線? – Zulu

+0

試着再想一些。在你完成你想要的任務之前,你還有很長的路要走。 – asheeshr

+0

你說過,有些記錄有類似的字段。這是否意味着您的文件沒有嚴格的結構,即某些記錄沒有一個或兩個字段'Class'和'Subject',而其他記錄具有附加字段?而且,你的意思是'將整個文本文件分割成等於no。的記錄。「 - 你需要列表的字符串或其他東西? – aga

回答

3
def records(file_path): 
    with open(file_path) as f: 
     chunk = [] 
     for line in f: 
      if 'name' in line: 
       if chunk: 
        yield chunk 
       chunk = [line] 
      else: 
       chunk.append(line) 
     if chunk: 
      yield chunk 

for record in records('data.txt'): 
    print '--------' 
    print ''.join(record) 

打印

-------- 
    name: 
    Class: 
    Subject: 

-------- 
    name: 
    Class: 
    Subject: 
+0

感謝您的解決方案,工作正常。 – Karan