的文件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
...
...
當然,你可以命名不管你選擇你的輸出文件。