2017-07-17 54 views
0

我有許多行的測試文件。我想刪除具有特定開始和結束字符的行。如何刪除以特定字符開頭和結尾的文件的明確行

這裏是我的代碼:

with open('test.txt', 'r') as f, open('output.txt', 'w') as out: 
    for i, line in enumerate(f): 
     if (line.startswith('E3T') and line.endswith('3')): 
      out.write(line) 
     elif (line.startswith('E4Q') and line.endswith('3')): 
      out.write(line) 
     elif (line.startswith('E4Q') and line.endswith('4')): 
      out.write(line) 
     elif (line.startswith('E4Q') and line.endswith('3')): 
      out.write(line) 
     elif line.startswith('BC'): 
      break 

這是我的test.txt文件

E3T 1 2 1 3 3 
E3T 2 4 2 5 1 
E3T 3 3 5 2 4 
E3T 3326 2001 2008 1866 10 
E4Q 3327 1869 2013 2011 1867 9 
E4Q 3328 1867 2011 2012 1868 8 
E4Q 3329 1870 2014 2013 1869 4 
E3T 8542 4907 4908 4760 5 
E3T 8543 4768 4909 4761 9 
E3T 8544 4909 4763 4761 6 
E3T 17203 9957 9964 10161 3 
E3T 17204 9957 10161 9959 2 
BC 1 "Zulauf: Temperatur" 12 0 1 "HYDRO_WT-2D" 
BC_DEF 12 1 "Temperatur [°C]" 5 "Zeit [s]" "Temperatur [°C]" 

和輸出應該是這樣的:

E3T 1 2 1 3 3 
E3T 3 3 5 2 4 
E4Q 3329 1870 2014 2013 1869 4 
E3T 17203 9957 9964 10161 3 

我認爲,它確實因空間而不工作。有沒有這樣做pythonic方式,或者我必須拆分線,然後比較第一和最後charachters?

回答

1

當你以這種方式閱讀一條線時,在它的末尾會有一個換行符或一個換行符/換行符,這通常對您來說是「不可見」的。你需要以某種方式處理,否則endswith將處理它,而不是你想要處理的角色。然後,當你輸出一行時,你需要把換行符放回去。

with open('test.txt', 'r') as f, open('output.txt', 'w') as out: 

    for i, line in enumerate(f): 
     line = line.strip() 
     if (line.startswith('E3T') and line.endswith('3')): 
      out.write(line+'\n') 
     elif (line.startswith('E4Q') and line.endswith('3')): 
      out.write(line+'\n') 
     elif (line.startswith('E4Q') and line.endswith('4')): 
      out.write(line+'\n') 
     elif (line.startswith('E4Q') and line.endswith('3')): 
      out.write(line+'\n') 
     elif line.startswith('BC'): 
      break 

在這種情況下,我用strip丟棄在每行的開頭和結尾的空白。這是一個非常粗糙的方法。它會更好用,

line = line.rstrip() 

它只從字符串的右端剝離空白區域。

編輯,在回答中註釋的問題:

替換最後一行上面這幾行,

out.write(line+'\n') 
else: 
    continue 
+0

謝謝你的解決方案!如果我想寫下其餘的線並且不要中斷,我該怎麼辦?這意味着文件的其餘部分應該與輸入文件相同! –

+0

請參閱編輯。 –

相關問題