我正在尝试打开一个文本文件,然后从“第一文本”复制行,直到“最后一个文本”,然后将其写入另一个文本文件。我不确定该如何完成。
with open('SumBillRpt2019-2-27 Cyl 20.txt') as original_file,
open('test.txt', 'w') as new_file:
for line in original_file:
if line.strip() == 'FIRST TEXT HERE' in line.strip():
new_file.write(original_file.read())
if line.strip() == 'LAST TEXT HERE':
new_file.write(original_file.read())
答案 0 :(得分:1)
创建一个true / false变量,以跟踪是否应将当前行写入新文件,并将其初始化为false。
从原始文件中读取每一行时,如果它匹配FIRST TEXT,则将标志设置为true,否则,如果它匹配LAST TEXT,则将标志设置为false。
然后,如果该标志为true,则将该行写入新文件。
writing = False
with open('original.txt', 'r') as original, open('new.txt', 'w') as new:
for line in original:
if line.strip() == 'FIRST TEXT HERE':
writing = True
elif line.strip() == 'LAST TEXT HERE':
writing = False
# if you know this text will only occur once, you
# could just break out of the loop here
if writing:
new.write(line)
答案 1 :(得分:0)
使用sed
:
$ sed -n -e "/FIRST TEXT/,/LAST TEXT HERE/p" < input.txt > output.txt
答案 2 :(得分:0)
如果我对您的理解正确,那么您想遍历原始文件,如果找到起始字符串,则开始复制到文件b,到达终止字符串后就停止复制。我会用一个标志来表明您在这两个字符串之间:
with open('SumBillRpt2019-2-27 Cyl 20.txt') as original_file,
open('test.txt', 'w') as new_file:
flag = false
for line in original_file:
if line.strip() == 'FIRST TEXT HERE' in line.strip():
flag = true
if flag:
new_file.write(original_file.read())
if line.strip() == 'LAST TEXT HERE':
break
注意:我没有测试代码。