繁体   English   中英

在Python中的文本文件的两个条件之间打印字符串

[英]print the string in between 2 conditions of text file in Python

我是python的新手,正努力在文本文件的条件之间打印字符串。我的文本文件包含以下信息

03:37:59 CONFIRM 03.37.59 IS-0008 SS-XYZ  SSU-BSS  AB-008966 CTL-I001234   
03:37:59 123HTSA TVP5                                                      
08:12:19 SNAP 290D 08.12.20 CX-A TU-BSS ZRE-BSS IS-3 
08:12:19 PSW-07151000 813264 00000000 2967561E      
08:12:19 PGM-BA13 CODE-U00BA1302 TERM-000000A  

/*After this a few lines of data display*/

08:12:19 GOOD BYE TAKE CARE   

第三行具有“ SNAP” ,“ IS-”第5行具有“ PGM-XXXX ”,其中XXXX =程序名称,“ CODE-XXXXXXXXX” XXXXXXXXX =编码的快照转储类型。 接下来将显示几行数据。 行数是可变的并且可以改变。 最后一行是“ GOOD BYE TAKE CARE”

我的输出应该是

08:12:19 SNAP 290D 08.12.20 CX-A TU-BSS ZRE-BSS IS-3 
08:12:19 PSW-07151000 813264 00000000 2967561E      
08:12:19 PGM-BA13 CODE-U00BA1302 TERM-000000A        

/*After this a few lines of data display*/

08:12:19 GOOD BYE TAKE CARE

我已经尝试过,但是我想打印到08:12:19好的再见

with open("TEXT.txt", "r") as file:
output = ""
for line in file.readlines():
    if "CTL" in line:
        output += line
        print(output)

如果我理解正确,那么您只需要打印包含SNAP和IS-的行,那该怎么办?

import re
with open("TEXT.txt", "r") as file:
    output = ""
    ok = False
    for line in file:
        if re.search('SNAP.*IS-', line):
            ok = True
        if ok:
            output += line
    print(output)
printing = False
with open('text.txt') as file:
    for line in file.readlines():
        if line[9:13] == 'SNAP':
            printing = True
        if printing:
            print (line.strip())
        if line == '08:12:19 GOOD BYE TAKE CARE':
            break

最初,布尔变量printing设置为False以便禁用打印。 循环读取行。 在特殊位置用“ SNAP”读取一行时, printing is set to True以启用打印。 在这种情况下,将在读取行后立即对其进行打印。 当读取一行containind'GOOD BYE [etc]'时,循环中断,脚本结束。

编辑:如果您想在“ GOOD BYE [etc]”之前结束打印,则脚本可能如下。

printing = False
with open('text.txt') as file:
    for line in file.readlines():
        if line[9:13] == 'SNAP':
            printing = True
        if line.strip() == '08:12:19 GOOD BYE TAKE CARE':
            break
        if printing:
            print (line.strip())

通知特别是line必须剥去的结束行字符到测试是否相等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM