簡體   English   中英

如何在不知道行號的情況下將文件讀取為以給定單詞開頭的字符串?

[英]How can I read a file to a string starting at a given word without knowing the line number?

我在格式如下的日志文件中有測試結果:

無用的信息

無用的信息

======================

有用的信息

有用的信息

======================

測試成功

每節中的行數可以變化,因此我想檢查雙等號'=='的首次出現,並將該行讀取到文件末尾成為字符串。 目前,我正在使用以下代碼將整個文件讀入字符串。

with open ("Report.txt", "r") as myfile:
    data = myfile.read()

謝謝您的幫助!

useful = []
with open ("Report.txt", "r") as myfile:
    for line in myfile:
        if "===" in line:
            break
    for line in myfile:
        useful.append(line)
a_string = "".join(useful)

但是,我希望將其隱藏在生成器中,如下所示:

def report_iterator():
    with open ("Report.txt", "r") as myfile:
        for line in myfile:
            if "===" in line:
                break
        for line in myfile:
            yield line

for line in report_iterator():
    # do stuff with line

所有的過濾和歸類都是在生成器函數中完成的,您可以將“過濾輸入”的邏輯與“使用輸入的邏輯”分開。

您可以逐行閱讀,默認情況下不存儲行。 當您獲得以'=='開頭的行時,您將讀取所有行,直到您讀取存儲在字符串或列表中的第二個'=='行為止。

如果您將整個文件存儲在內存中,則可以像這樣獲得“除第一部分外的所有內容”:

useful = data.split('======================\n',1)[1]

這將在第一次出現分隔符時拆分數據,並分隔符之后返回所有內容。

myfile = open("Report.txt", "r")
while myfile.readline()[:2] != '==':
    pass
for line in myfile:
    data = line

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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