我已經看到過幾個類似的問題(複製觸發行或者確定大小的塊),但它們並不完全符合我想要做的。我有一個非常大的文本文件(來自Valgrind的輸出),我只想將其裁減到僅需要的部分。閱讀並複製python中特定的文本塊
該文件的結構如下:它們是以包含字符串'in loss record'
的標題行開頭的行塊。我只想觸發那些也包含字符串'definitely lost'
的標題行,然後複製下面的所有行,直到到達另一個標題行(此時決策過程重複)。
如何在Python中實現這樣的選擇和複製腳本?
這是我到目前爲止嘗試過的。它可行,但我認爲這不是最有效的(或pythonic)方法,所以我希望看到更快的方法,因爲我正在使用的文件通常很大。 (此方法需要1.8秒爲一個290M的文件)
with open("in_file.txt","r") as fin:
with open("out_file.txt","w") as fout:
lines = fin.read().split("\n")
i=0
while i<len(lines):
if "blocks are definitely lost in loss record" in lines[i]:
fout.write(lines[i].rstrip()+"\n")
i+=1
while i<len(lines) and "loss record" not in lines[i]:
fout.write(lines[i].rstrip()+"\n")
i+=1
i+=1
您到目前爲止嘗試過什麼? –
通過編寫一些代碼。如果您發現了類似的問題,請根據您的具體情況調整答案。 – jonrsharpe
@jonrsharpe我的觀點是,這些類似的問題訴諸於諸如'for line in f'和'if x in f'等等,這在這裏不起作用。 – Demosthene