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

2024-06-01 10:12:06 发布

您现在位置: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”xxxxxxxx=type ofSnap按编码转储。 接下来是几行数据显示。行数是可变的,可以改变。 最后一行是“再见保重”

我的输出应该是

^{pr2}$

我试过了,但我想打印到08:12:19再见保重

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

Tags: 字符串in文本outputislinecode条件
2条回答
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,因此打印被禁用。循环读取行。当在特殊位置printing is set toTrue`读取一行时,启用打印。在这种情况下,一读到行就打印出来。当一行被读取containind“再见[etc]”时,循环中断,脚本结束。在

编辑:如果您想在“再见[etc]”之前结束打印,那么脚本可以如下所示。在

^{pr2}$

请特别注意,line必须从行尾字符中剥离,以测试是否相等。在

如果我正确地理解您只需要打印以包含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)

相关问题 更多 >