2011-09-06 58 views

回答

2

最簡單的方法,我能想到的是

contents = [] 

with open('file') as f: 
    for line in f: 
     if line.startswith('<start>'): 
      pass 
     contents.append(line) 

contents = "".join(contents) 
sections = contents.split("<stop>") 

基本上,使用列表中的行爲模式和存儲,然後再使用模式來獲得部分。

0

使用正則表達式來提取分隔符之間的文本。

0

這是一個解決方案,對輸入文件進行一些免費的理智檢查。

with open('ProgramInput.txt') as f: 
    program_input = f.readlines() 

start_lines = [line_number for line_number,line in enumerate(program_input) if line.startswith('<start>')] 
stop_lines = [line_number for line_number,line in enumerate(program_input) if line.startswith('<stop>')] 

if len(start_lines) != len(stop_lines): 
    raise Exception('corrupt input file') 

for m,n in zip(stop_lines, start_lines): 
    if m - n <= 0: 
    raise Exception('corrupt input file') 
    with open('ProgramOutput_lines_{0}-{1}.txt'.format(n+2,m), 'w') as f: 
    f.writelines(program_input[n+1:m]) 

這讓我ProgramOutput_lines_2-5.txt

content 
... 
... 
... 

ProgramOutput_lines_9-11.txt

content 
... 
... 

當然,你可以命名不管你選擇你的輸出文件。