2011-09-06 57 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 
... 
... 

当然,你可以命名不管你选择你的输出文件。