2017-05-05 230 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

相關問題