将两个字符串之间的行复制到另一个文件

时间:2019-03-20 15:50:07

标签: python

我正在尝试打开一个文本文件,然后从“第一文本”复制行,直到“最后一个文本”,然后将其写入另一个文本文件。我不确定该如何完成。

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())

3 个答案:

答案 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

注意:我没有测试代码。