2011-10-25 32 views
55

試圖找出如何編寫if循環來檢查行是否爲空。python:如何檢查一行是否爲空行

該文件具有許多字符串,和這些中的一個是一個空行從其它語句分離(不是「」;是一個回車後跟另一個回車我覺得)

new statement 
asdasdasd 
asdasdasdasd 

new statement 
asdasdasdasd 
asdasdasdasd 

由於我正在使用文件輸入模塊,有沒有辦法檢查一行是否爲空?

使用此代碼似乎工作,謝謝大家!

for line in x: 

    if line == '\n': 
     print "found an end of line" 

x.close() 

回答

77

如果你想忽略只有空白行:

if not line.strip(): 
    ... do something 

空字符串是一個False值。

或者,如果你真的想只空行:

if line in ['\n', '\r\n']: 
    ... do something 
+0

第二個做我心目中的,謝謝! if ['\ n']中的行: – user1006198

+1

如果您只使用['\ n']'中的if行,則應將其替換爲'if line =='\ n''。 –

+1

我想指出接受的答案有一個錯誤:如果line.strip():... #do某物忽略具有空格的行,即空格,製表符和空行。這就是爲什麼只有第二個人爲原始海報工作:'不'必須被刪除。 – niefpaarschoenen

9
line.strip() == '' 

或者,如果你不想 「吃起來」 由空格線:

line in ('\n', '\r\n') 
+1

在第二個示例中,您可能還需要檢查「\ r \ n」以說明Windows樣式的行尾( CRLF) – poplitea

+0

忘了提及它在Unix機器上運行,所以它使用換行符而不是\ r。嘗試了你,但它沒有工作,什麼是爲我工作:如果行['\ n'] :(不知道爲什麼行==「\ n」不會工作) – user1006198

+1

@ user1006198:只重新檢查'\ n',那麼'line =='\ n''更好。你應該再試一次,弄清楚你的問題是什麼。 – retracile

12

我使用下面的代碼來測試有空白或無空白的空行。

if len(line.strip()) == 0 : 
    # do something with empty line 
1

我覺得是更強大的使用正則表達式:

import re 

for i, line in enumerate(content): 
    print line if not (re.match('\r?\n', line)) else pass 

這將匹配在Windows/UNIX。此外,如果您不確定僅包含空格字符的行,則可以使用'\s*\r?\n'作爲表達式