[英]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.