的文件ProgramInput.txt有这个作为其内容如何以特定的方式遍历python中的文件,如下所述。
<start>
content
...
...
...
<stop>
<start>
content
...
...
<stop>
等
如何遍历txt文件,让我拿出各自之间的内容并将其存储在一个每次迭代中有不同的文件?
的文件ProgramInput.txt有这个作为其内容如何以特定的方式遍历python中的文件,如下所述。
<start>
content
...
...
...
<stop>
<start>
content
...
...
<stop>
等
如何遍历txt文件,让我拿出各自之间的内容并将其存储在一个每次迭代中有不同的文件?
最简单的方法,我能想到的是
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>")
基本上,使用列表中的行为模式和存储,然后再使用模式来获得部分。
使用正则表达式来提取分隔符之间的文本。
这是一个解决方案,对输入文件进行一些免费的理智检查。
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
...
...
当然,你可以命名不管你选择你的输出文件。