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