簡體   English   中英

在Python中的文本文件的兩個條件之間打印字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM