Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中打印文本文件的两个条件之间的字符串_Python_If Statement_Text - Fatal编程技术网

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

在Python中打印文本文件的两个条件之间的字符串,python,if-statement,text,Python,If Statement,Text,我是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

我是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-xxxxxxxx”xxxxxxxx=编码的快照类型。 随后将显示几行数据。行数是可变的,可以更改。 最后一行是“再见,保重”

我的输出应该是

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
,以便禁用打印。行以循环方式读取。当在特殊位置使用“SNAP”读取行时,
printing设置为
True`以启用打印。在这种情况下,行在读取后立即打印。当读取行时,包含“OOD BYE[etc]”循环中断,脚本结束

编辑:如果您想在“再见[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())

请特别注意,
必须去掉行尾字符,以测试是否相等。

您如何挣扎?您已经有代码了吗?您正在解释您所拥有的内容,但没有明确的说明您想要什么以及它与您所拥有的内容的关系。明确这一点是自动化的第一部分。使用open(“TEXT.txt”,“r”)作为file:output=“”表示文件中的行。readlines():如果第行中的“CTL”:output+=行打印(output)@Venkatesan,好的,显示预期结果的确切外观。代码中的缩进在这个问题中的具体显示方式是什么?您的代码正在打印到再见时小心(在这一行之前)。如果我想打印“再见,小心”这一行意味着我应该怎么做?你能帮我一下吗?我已经根据我认为你可能的意思编辑了我的答案。
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())