2012-04-19 28 views
2

我在日誌文件中的測試結果的格式爲:如何在不知道行號的情況下將文件讀入以給定單詞開始的字符串?

無用信息

無用信息

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

有用的信息

有用的信息

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

測試成功

在每個部分中可以變化的行數,所以我想檢查爲雙等於字符「==」的第一外觀以及讀取線,直到文件的末尾成一個字符串。目前我使用下面的代碼將整個文件讀入字符串。

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

感謝您的幫助!

回答

4
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 

所有過濾和挑剔的發電機功能做的,你可以單獨的邏輯從「使用輸入」的邏輯中「過濾輸入」。

+0

這正是我需要的,非常感謝! – 2012-04-19 14:57:11

0

如果你有在內存中的整個文件,就可以得到「一切,但是第一部分」是這樣的:

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

其將在您的分隔符中第一次出現的數據,返回一切之後的分隔符。

2

您可以逐行讀取,默認情況下不存儲行。當你得到以'=='開頭的行,然後讀取所有行,直到讀取存儲在字符串或列表中的第二行'=='行。

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