2016-12-04 143 views
0

我試圖刪除以數字開頭的文件中的所有行。我想出了下面這段代碼,但它不起作用。刪除所有以數字開頭的行使用python

output = open("/home/test1/Desktop/diff2.txt", "w") 

with open("/home/test1/Desktop/diff.txt") as input: 
    for line in input: 
    if not line.lstrip().isdigit(): 
     output.write(line) 
     print(line) 

    input.close() 
    output.close() 
    exit(); 

它最終還是打印與輸出文件

+0

你能提供一個文件的例子嗎? – JosephGarrone

+0

您在for循環的內容中發佈了一個縮進錯誤。 – theorifice

+0

是的,我將編輯它的問題 – answerSeeker

回答

0

這下面的腳本作品對我的快速測試案例精:

output = open("test.out", "w") 

with open("test.in") as input: 
    for line in input: 
     if not line.lstrip()[0].isdigit(): 
      output.write(line) 
      print(line) 

output.close() 

隨着輸入:

1test 
2test 
hello 
3test 
world 
4something 

給出輸出:

hello 
world 
+1

謝謝,這解決了我的問題。 – answerSeeker

0

號您對整個排隊叫is_digit,將返回True只有在訂單完全由數字開始的所有行。

with open('input.txt') as inp, open('output.txt', 'w') as out: 
    out.write(''.join(l for l in inp if l[0] not in '123456789')) 
0

lstrip().isdigit()不檢查行中的第一個字符是數字。你應該採取的第一個字符(如果該行有個字符),並在該字符檢查isdigit()

if line == '' or not line[0].isdigit(): 
    output.write(line) 
相關問題