2017-05-05 35 views
-1

我是新来python.I很努力打印字符串文本file.My文本文件中的条件之间包含以下打印在文本文件中的条件2的字符串在Python

03:37:59 CONFIRM 03.37.59 IS-0008 SS-XYZ SSU-BSS AB-008966 CTL-I0
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照顾”

我的输出应该

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 

我都试过,但我想打印高达8时12分19秒GOOD BYE TAKE CARE

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

你怎么挣扎?你有没有任何代码? – TerryA

+0

你正在解释你有什么,但没有明确说明你想要什么以及与你有什么关系。明确说明是自动化的第一部分。 –

+0

张开( “TEXT.TXT”, “R”)作为文件: 输出= “” 用于线在file.readlines(): 如果 “CTL” 在线: 输出+ =行 打印(输出) – Venkatesan

回答

1
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 to True中用'SNAP'读取一行以启用打印。在这种情况下,线条一旦被读取就会被打印出来。当读取一行时,包含'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必须剥去的结束行字符来测试是否相等。

+0

是的,它工作正常条例草案非常感谢 – Venkatesan

+0

你是最受欢迎的。 –

+0

您的代码打印到GOOD BYE TAKE CARE(在此行之前)。如果我想打印GOOD BYE TAKE CARE行意味着我该怎么办?你能帮忙吗? – Venkatesan

1

如果我正确地理解了你,你只需要打印包含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) 
+0

非常感谢你在船运其工作正常 – Venkatesan

相关问题